Sqoop Merge 命令中的 FileNotFound 错误

FileNotFound error in Sqoop Merge command

我正在尝试执行一个 sqoop 合并命令,为此,我执行了一个 Sqoop codegen 以将 class 和 table 的 jar 放入 HDFS

Sqoop CodeGen 命令:

sqoop codegen --connect jdbc:mysql://127.0.0.1/mydb --table mergetab --username root --password cloudera --outdir /user/cloudera/codegenclasses --fields-terminated-by '\t'

我在 outdir 中有以下文件:/user/cloudera/codegenclasses

-rw-r--r--   1 cloudera cloudera       9572 2017-04-20 16:26 codegenclasses/mergetab.class
-rw-r--r--   1 cloudera cloudera       3902 2017-04-20 16:26 codegenclasses/mergetab.jar
-rw-r--r--   1 cloudera cloudera      12330 2017-04-20 16:26 codegenclasses/mergetab.java

我是 运行 下面的 sqoop 合并命令,用于更新我的配置单元中的行 table:

sqoop merge --merge-key id --new-data /user/cloudera/incrdata/incrementaldata --onto /user/cloudera/hivetables/fulltabledata --target-dir /user/cloudera/updateddatam --class-name /user/cloudera/codegenclasses/mergetab.class --jar-file /user/cloudera/codegenclasses/mergetab.jar

但是我得到了错误:

Encountered IOException running import job: java.io.FileNotFoundException: File /user/cloudera/codegenclasses/44059c9b2bd47b95f03866d8d93eff7f/mergetab.jar does not exist

我有文件夹中的所有文件,并提供了正确的目录。但我无法确定我在这里犯的错误。 谁能帮我解决这个问题?

参数--outdir <dir>中指定的<dir>路径属于本地文件系统。使用 --outdir 只会存储生成的代码,即 tablename.java。请改用 --bindir <dir>

sqoop codegen --connect jdbc:mysql://127.0.0.1/mydb --table mergetab --username root --password cloudera --bindir /path/to/store/jarfile --fields-terminated-by '\t'

然后merge。默认情况下,table 名称是 --class-name

sqoop merge --merge-key id --new-data /user/cloudera/incrdata/incrementaldata --onto /user/cloudera/hivetables/fulltabledata --target-dir /user/cloudera/updateddatam --class-name mergetab --jar-file /path/to/store/jarfile/mergetab.jar