使用apache sqoop从sqlserver导入hive时出现问题?

时间:2015-06-25 09:16:45

标签: sql-server bash hadoop sqoop

当我从 $ SQOOP_HOME / bin 运行以下sqoop命令时,它可以正常工作

sqoop import --connect "jdbc:sqlserver://ip_address:port_number;database=database_name;username=sa;password=sa@Admin" --table $SQL_TABLE_NAME --hive-import --hive-home $HIVE_HOME --hive-table $HIVE_TABLE_NAME -m 1 

但是当我在循环中为bash脚本中的不同数据库运行相同的命令时,如下所示

while IFS='' read -r line || [[ -n $line ]]; do  
$DATABASE_NAME=$line

sqoop import --connect "jdbc:sqlserver://ip_address:port_number;database=$DATABASE_NAME;username=sa;password=sa@Admin" --table $SQL_TABLE_NAME --hive-import --hive-home $HIVE_HOME --hive-table $HIVE_TABLE_NAME -m 1  

done < "$1"

我将数据库名称作为参数传递给文本文件中的bash脚本。我的hive表与我想要仅在一个配置单元表中的所有数据库中附加数据相同。

对于前两个三个数据库,它开始提供以下错误后工作正常

15/06/25 11:41:06 INFO mapreduce.Job: Job job_1435124207953_0033 failed with state FAILED due to:  

15/06/25 11:41:06 INFO mapreduce.ImportJobBase: The MapReduce job has already been retired. Performance  

15/06/25 11:41:06 INFO mapreduce.ImportJobBase: counters are unavailable. To get this information,  

15/06/25 11:41:06 INFO mapreduce.ImportJobBase: you will need to enable the completed job store on  

15/06/25 11:41:06 INFO mapreduce.ImportJobBase: the jobtracker with:  
11:41:06 INFO mapreduce.ImportJobBase:mapreduce.jobtracker.persist.jobstatus.active = true  
11:41:06 INFO mapreduce.ImportJobBase: mapreduce.jobtracker.persist.jobstatus.hours = 1  
15/06/25 11:41:06 INFO mapreduce.ImportJobBase: A jobtracker restart is required for these settings  
15/06/25 11:41:06 INFO mapreduce.ImportJobBase: to take effect.  
15/06/25 11:41:06 ERROR tool.ImportTool: Error during import: Import job failed!  

我已经通过更改mapred-site.xml以及上述两个参数来重启我的多节点hadoop集群,即

mapreduce.ImportJobBase:mapreduce.jobtracker.persist.jobstatus.active = true  
 mapreduce.jobtracker.persist.jobstatus.hours = 1  

我仍面临同样的问题。因为我刚开始学习sqoop,所以我们将不胜感激。

0 个答案:

没有答案