sqoop job作业介绍及其操作

it2022-05-05  175

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)


最新回复(0)