以下是创建Sqoop作业的语法。
$ sqoop job (generic-args) (job-args) [-- [subtool-name] (subtool-args)] $ sqoop-job (generic-args) (job-args) [-- [subtool-name] (subtool-args)]在这里,我们创建一个名为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’ 参数是用来验证保存的作业。下面的命令用来验证保存Sqoop作业的列表。
bin/sqoop job --list它显示了保存作业列表。
Available jobs: myjob‘–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’ 选项用于执行保存的作业。下面的命令用于执行保存的作业称为myjob。
bin/sqoop job --exec myjob sqoop需要输入mysql密码它会显示下面的输出。
10/08/19 13:08:45 INFO tool.CodeGenTool: Beginning code generation ...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在创建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通过命令
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)