sqoop job作业介绍及其操作

sqoop job作业介绍
语法
以下是创建Sqoop作业的语法。

$ sqoop job (generic-args) (job-args)
[-- [subtool-name] (subtool-args)]

$ sqoop-job (generic-args) (job-args)
[-- [subtool-name] (subtool-args)]
 
创建作业(–create)
在这里,我们创建一个名为myjob,这可以从RDBMS表的数据导入到HDFS作业。下面的命令用于创建一个从DB数据库的employee表导入到HDFS文件的作业。

bin/sqoop job --create myjob1 -- import --connect jdbc:mysql://node03:3306/userdb
--username root
--password 123456
--target-dir /sqoopresult555
--table emp --m 1

注意import前要有空格
 
验证作业 (–list)
‘–list’ 参数是用来验证保存的作业。下面的命令用来验证保存Sqoop作业的列表。

bin/sqoop job --list
 它显示了保存作业列表。

Available jobs:
myjob
 
检查作业(–show)
‘–show’ 参数用于检查或验证特定的工作,及其详细信息。以下命令和样本输出用来验证一个名为myjob的作业。

bin/sqoop job --show myjob
 
它显示了工具和它们的选择,这是使用在myjob中作业情况。

Job: myjob
Tool: import Options:
----------------------------
direct.import = true
codegen.input.delimiters.record = 0
hdfs.append.dir = false
db.table = employee
...
incremental.last.value = 1206
...
 
执行作业 (–exec)
‘–exec’ 选项用于执行保存的作业。下面的命令用于执行保存的作业称为myjob。

bin/sqoop job --exec myjob

sqoop需要输入mysql密码

 
它会显示下面的输出。

10/08/19 13:08:45 INFO tool.CodeGenTool: Beginning code generation
...
 
job的免密输入
sqoop在创建job时,使用–password-file参数,可以避免输入mysql密码,如果使用–password将出现警告,并且每次都要手动输入密码才能执行job,sqoop规定密码文件必须存放在HDFS上,并且权限必须是400。

#在mymysql.pwd中追加MySQL密码
echo -n "123456" > mymysql.pwd
#创建保存密码文件的目录
hadoop fs -mkdir -p /input/sqoop/pwd/
#把密码文件放入该目录中
hadoop fs -put mymysql.pwd /input/sqoop/pwd/
#修改文件权限
hadoop fs -chmod 400 /input/sqoop/pwd/mymysql.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参数

bin/sqoop job --create myjob2 -- import --connect jdbc:mysql://node-1:3306/userdb
--username root
--password-file /input/sqoop/pwd/mymysql.pwd
--target-dir /sqoopresult666
--table emp --m 1 

执行job
通过命令

sqoop job -exec myjob1
1
如果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)


————————————————
版权声明:本文为CSDN博主「fly_234」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42917938/article/details/96432917

原文地址:https://www.cnblogs.com/javalinux/p/14929977.html