4.3重命名sqoop作业实例

Apache Sqoop Cookbook 英文版-翻译学习!!
更多信息https://blue-shadow.top/

问题

可以在Hadoop群集上同时运行多个来自不同数据库的free-form查询导入,所有MapReduce的工作都被命名为
QueryResult.jar, 所以很难看到哪个MapReduce作业是属于哪个导入查询。

解决方案

可以使用命令行参数 --mapreduce-job-name 来指定生成的MapReduce作业的名字。而这个名字会在
Web界面上的JobTracker目录下显示。通过以下的命令来明白normcities作业:

sqoop import \
--connect jdbc:mysql://mysql.example.com/sqoop \
--username sqoop \
--password sqoop \
--query 'SELECT normcities.id, \
        countries.country, \
        normcities.city \
        FROM normcities \
        JOIN countries USING(country_id) \
        WHERE $CONDITIONS' \
--split-by id \
--target-dir cities \
--mapreduce-job-name normcities

讨论

sqoop遵循默认的Hadoop的默认行为:使用MapReduce的作业名作为提交的jar包的名字。对于一个导入的表,对应
的jar包的名字以表名字进行命名,这样可以生成一个唯一的jar包,因此MapReduce名字也是唯一的。对于使用
free-form的查询,由于不是一个单独的表,sqoop会使用QueryResult作为Jar包的基础名字。所有的查询导入
在Web界面的JobTracker列表的名字都是一样的。可以使用--mapereduce-job-name参数来定义名字。

转载于:https://www.jianshu.com/p/63bed8d37383

猜你喜欢

转载自blog.csdn.net/weixin_34406086/article/details/91186140