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
我正在尝试执行一个 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