我想从SQL Server导入数据并从配置单元中查询。
我使用cloudera模板创建了一个VirtualBox,并开始阅读其教程。
我成功地能够使用sqoop作为avro文件从SQL Server导入数据,然后在hive中创建表并从avro文件导入数据。然后从配置单元中查询它。
但sqoop的import-all-tables命令只导入架构表" dbo"。
如果我还要导入具有模式dw
的表,该怎么办?我尝试使用import命令导入dw
模式中存在的特定表。但那也行不通。
任何想法如何使用sqoop将非dbo.
架构相关表格作为avro从SQL Sever导入数据?或者从SQL Server导入除dbo.
模式之外的数据并将其直接加载到配置单元中?
答案 0 :(得分:1)
下载JDBC驱动程序并将其复制到sqoop目录
sqoop import --driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" --connect="jdbc:sqlserver://sqlserver;database=databasename;username=username;password=passwordofuserprovidedinusername" --username=username --password= passwordofuserprovidedinusername --table="schemaname.tablename" --split-by=primarykeyoftable --compression-codec=snappy --as-avrodatafile --warehouse-dir=/user/hive/warehouse/tablename
使用sqoop
从Sql Server导入表hadoop fs -ls /user/hive/warehouse
ls -l *.avsc
验证表格是否正确导入
sudo -u hdfs hadoop fs -mkdir /user/examples
sudo -u hdfs hadoop fs -chmod +rw /user/examples
hadoop fs -copyFromLocal ~/*.avsc /user/examples
创建新目录并提供适当的权限
hive
启动配置单元
CREATE EXTERNAL TABLE tablename
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///user/hive/warehouse/tablename’
TBLPROPERTIES ('avro.schema.url'='hdfs://quickstart.cloudera/user/examples/sqoop_import_schemaname_tablename.avsc');
将表格架构和数据从sqoop导入到hive仓库
GET /image.gif HTTP/1.1
User-Agent: WebBrowser
Accept-Encoding: deflate,gzip
Connection: keep-alive
... and more headers if present ...
注意: 确保在输入命令时,如果您正在处理命令,则单引号可能会更改。路径或文件名中不应有任何空格。