sqoop job省略输入mysql密码

sqoop在创建job时,使用–password-file参数,可以避免输入mysql密码,如果使用–password将出现警告,并且每次都要手动输入密码才能执行job,sqoop规定密码文件必须存放在HDFS上,并且权限必须是400,下面介绍如何创建密码文件执行job,使用的sqoop版本是版本是sqoop-1.4.6-cdh5.7.0。

  • 创建密码文件并放置到HDFS

假设我的mysql密码是123456:

echo -n "123456" > 118mysql.pwd
hadoop fs -rm /input/sqoop/pwd/118mysql.pwd
hadoop fs -put 118mysql.pwd /input/sqoop/pwd/
hadoop fs -chmod 400 /input/sqoop/pwd/118mysql.pwd

完成后可以通过hadoop fs -ls /input/sqoop/pwd查看:

-r--------   3 root supergroup          6 2018-09-17 14:36 /input/sqoop/pwd/118mysql.pwd
  • 检查sqoop的sqoop-site.xml是否存在如下配置:
<property>
    <name>sqoop.metastore.client.record.password</name>
    <value>true</value>
    <description>If true, allow saved passwords in the metastore.
    </description>
</property>
  • 创建sqoop job

在创建job时,使用–password-file参数

sqoop job --create torderincrementjob -- import \
 --connect jdbc:mysql://172.16.*.*:3306/*?useCursorFetch=true \
 --username * \
 --password-file /input/sqoop/pwd/109mysql.pwd \
 --target-dir /mysqldb/t_order \
 --table t_order \
 --fields-terminated-by "\t" \
 --lines-terminated-by "\n" \
 --null-string '\\N' \
 --null-non-string '\\N' \
 --incremental append \
 --check-column id \
 --last-value 1281 \
 -m 1
  • 执行job

通过命令sqoop job -exec torderincrementjob执行job

如果password文件格式错误会有如下提示:
ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access denied for user ‘root’@’spark220’ (using password: YES)

ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1652)

    原文作者:Sx_Ren
    原文地址: https://www.jianshu.com/p/f77af0257b80
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞