sqoop-导入表时出错

93ze6v8z  于 2021-06-04  发布在  Sqoop
关注(0)|答案(2)|浏览(483)

我是新来的大数据我不知道是怎么回事!请注意,这是我自己学的。
我导入了一个名为 sqooptest 从mysql,从一个叫做 sqoopex8 使用此命令:

sqoop import \
--connect jdbc:mysql://localhost/sqoopex8 \
--table sqooptest \
-m 1

我不知道它去了哪里(或进口)。
有一堆错误被抛出,老实说,我甚至不知道在错误中寻找什么。如果是最后一行,上面写着 16/04/23 01:46:52 ERROR tool.ImportTool: Error during import: Import job failed! “再说一次,我正处于学习阶段,我自己也在学习,所以请你耐心点!
现在,我看看下面 /user/hduser/ 还有一个按表名命名的文件夹( sqooptest ). 但里面什么都没有。
接下来,直观地,环顾互联网,我发现mysql将其所有数据库都保存在 /var/lib/mysql . 显然,我没有访问它的权限,所以我必须从终端(cli)访问它。当我这么做的时候,我发现我所有的数据库都在那里。现在,我做到了:

sqoop import \
--connect jdbc:mysql://localhost/sqoopex8 \
--table sqooptest \
--target-dir /var/lib/mysql \
-m 1

(已添加) --target-dir /var/lib/mysql )
这是有原因的。当我这么做的时候 hadoop fs -ls /var/lib/mysql 我看到两个文件- _SUCCESS 以及 part-m-00000 . 为什么?为什么第一次就没用了。
而且,在第一次尝试中,即使我将目标指定为hdfs --target-dir /user/hduser ,因为某种原因它不需要。当我把目标设为本地文件系统时,它会接受它。为什么?

66bbxpm5

66bbxpm51#

sqoop需要一个空的目标路径来保存文件。您给出的路径/var/lib/mysql用作hdfs路径来保存导入的文件。
/user/hduser可能无法工作,因为该目录可能存在,或者您没有创建该目录的权限。请尝试使用hadoop fs-mkdir进行检查。
对于成功和部分文件在这里是一个很好的职位
hadoop中的success和part-r-00000文件是什么

eivnm1vs

eivnm1vs2#

默认情况下,sqoop会将数据从rdbms导入hdfs用户目录中的hdfs,例如:/user/hduser/[tablename]/part-m-00000为了避免这种情况,并将数据存储在我们想要的目录中,我们必须在--target dir子句中提到它。但是除了路径中的最后一个目录之外,这个路径应该存在。例如,如果--target dir是/user/hduser/mydirectory/mytabledata是路径,/user/hduser/mydirectory/应该存在于hdfs中,那么sqoop将在/user/hduser/mydirectory/下创建一个目录[mytabledata here],并将rdbms表数据导入该目录。
sqoop导入--连接jdbc:mysql用法:/localhost/sqoopex8 --表sqoopetest --目标目录/path/to/your/desireddir -m 1
请检查这里的文件。

相关问题