我需要创建一个需要连接位于SQL Server中的多个表的Hive。
我做了什么:
使用Sqoop将表/查询结果移动到HDFS中没有问题。然后,我在Hive中创建一个外部表,将表指向HDFS文件夹。另外,为了使表信息保持最新,我需要在crontab上添加一些内容,删除HDFS内容并再次调用相同的sqoop命令。
上面的解决方案有效,但它确实是一个PITA维护。
我必须写一个Hive创建外部表查询,这就像一次性工作,我知道,但你需要写下每一列
我看到了帖子here,似乎SQOOP可以直接将数据从SQL服务器移动到Hive,而无需关心列的详细信息。
我试过了:
sqoop import --driver 'net.sourceforge.jtds.jdbc.Driver'
--connect 'jdbc:jtds:sqlserver:/ip:1433/db;user=user;password=password'
--direct
--table "[db\$Shipment Cross Reference]"
--hive-import
--direct
--hive-overwrite
--create-hive-table
--hive-table shipment_cross_reference
--fields-terminated-by '\001'
--lines-terminated-by '\n' -m 1
然而,它错了:
14/03/12 19:19:31 INFO mapred.JobClient: Job complete: job_201403051725_0059
14/03/12 19:19:31 INFO mapred.JobClient: Counters: 6
14/03/12 19:19:31 INFO mapred.JobClient: Job Counters
14/03/12 19:19:31 INFO mapred.JobClient: Failed map tasks=1
14/03/12 19:19:31 INFO mapred.JobClient: Launched map tasks=4
14/03/12 19:19:31 INFO mapred.JobClient: Total time spent by all maps in occupied slots (ms)=33406
14/03/12 19:19:31 INFO mapred.JobClient: Total time spent by all reduces in occupied slots (ms)=0
14/03/12 19:19:31 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
14/03/12 19:19:31 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
14/03/12 19:19:31 WARN mapreduce.Counters: Group FileSystemCounters is deprecated. Use org.apache.hadoop.mapreduce.FileSystemCounter instead
14/03/12 19:19:31 INFO mapreduce.ImportJobBase: Transferred 0 bytes in 355.1399 seconds (0 bytes/sec)
14/03/12 19:19:31 WARN mapreduce.Counters: Group org.apache.hadoop.mapred.Task$Counter is deprecated. Use org.apache.hadoop.mapreduce.TaskCounter instead
14/03/12 19:19:31 INFO mapreduce.ImportJobBase: Retrieved 0 records.
14/03/12 19:19:31 ERROR tool.ImportTool: Error during import: Import job failed!
任何人都可以告诉我可以使用一个SQOOP一次从SQL服务器迁移到Hive吗?写的将是很棒的,或按日期分区......等等。
或者错误是什么意思? 谢谢!
答案 0 :(得分:0)
请分享使用参数生成的整个Sqoop输出--verboose和失败的Map任务日志。
Sqoop有对Microsoft SQL Server的内置支持,所以我想知道你是否有任何理由不使用它而不是使用jtds驱动程序?