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

如果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)

上一篇:Sqoop解决宽表内存溢出OutOfMemoryError


下一篇:iOS App 自定义 URL Scheme 设计(转自COCOACHINA)