使用Sqoop将MS SQL Server表迁移到Hive

时间:2014-03-13 00:18:54

标签: sql-server hive hdfs sqoop

我需要创建一个需要连接位于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吗?写的将是很棒的,或按日期分区......等等。

或者错误是什么意思? 谢谢!

1 个答案:

答案 0 :(得分:0)

请分享使用参数生成的整个Sqoop输出--verboose和失败的Map任务日志。

Sqoop有对Microsoft SQL Server的内置支持,所以我想知道你是否有任何理由不使用它而不是使用jtds驱动程序?