在特定队列上运行sqoop作业

时间:2016-06-07 09:54:57

标签: hadoop queue sqoop

我正在尝试创建在特定队列中运行的 Sqoop作业,但它不起作用。

我尝试了两件事:

第一:在作业创建中声明队列

sqoop job \
         --create myjob \
         -- import \
         --connect jdbc:teradata://RCT/DATABASE=MYDB \
         -Dmapred.job.queue.name=shortduration \
         --driver com.teradata.jdbc.TeraDriver \
         --username DBUSER -P \
         --query "$query" \
         --target-dir /data/source/dest/$i \
         --check-column DAT_CRN_AGG \
         --incremental  append \
         --last-value 2001-01-01 \
         --split-by NUM_CTR

但由于-Dmapred.job.queue.name=shortduration

,它会抛出解析参数错误

第二次:删除作业创建的-Dmapred.job.queue.name=shortduration。创造就业机会很好。但是无法指定应该使用哪个队列

我失去了在这个队列中完成工作的希望

感谢您提供的任何帮助!

编辑:导入使用sqoop import -Dmapred.job.queue.name=shortduration,但sqoop作业无法正常工作

1 个答案:

答案 0 :(得分:5)

我认为您的命令中有错误

-Dmapreduce.job.queuename=NameOfTheQueue
注意一个单词和顺序,根据文档,vm args需要在导入后直接进行。

https://sqoop.apache.org/docs/1.4.3/SqoopUserGuide.html#_using_generic_and_specific_arguments

  

通用Hadoop命令行参数:   (必须在任何特定于工具的参数之前)   支持的通用选项是   -conf指定应用程序配置文件   -D使用给定属性的值

sqoop job -Dmapred.job.queuename=shortduration \
         --create myjob \
         -- import  \
         --connect jdbc:teradata://RCT/DATABASE=MYDB \
         --driver com.teradata.jdbc.TeraDriver \
         --username DBUSER -P \
         --query "$query" \
         --target-dir /data/source/dest/$i \
         --check-column DAT_CRN_AGG \
         --incremental  append \
         --last-value 2001-01-01 \
         --split-by NUM_CTR

您可能只想尝试使用导入工具查看它是否正常工作然后执行作业命令即

sqoop import -Dmapred.job.queuename=shortduration \
         --connect jdbc:teradata://RCT/DATABASE=MYDB \
         --driver com.teradata.jdbc.TeraDriver \
         --username DBUSER -P \
         --query "$query" \
         --target-dir /data/source/dest/$i \
         --check-column DAT_CRN_AGG \
         --incremental  append \
         --last-value 2001-01-01 \
         --split-by NUM_CTR