sqoop - 导入表格有问题

时间:2016-04-22 21:26:49

标签: mysql hdfs sqoop

我是BigData的新手,我不知道发生了什么!请注意,我自己也在学习。

我使用此命令从名为sqooptest的数据库中导入了一个名为sqoopex8的表,来自:{/ p>

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将所有dbs保存在/var/lib/mysql中。显然,我无法访问它,所以我不得不从终端(CLI)访问它。当我这样做时,我在那里找到了所有的dbs。现在,我这样做了:

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时,我会看到两个文件 - _SUCCESSpart-m-00000。这是为什么?为什么它第一次不起作用。

此外,在第一次尝试中,即使我将目标指定为HDFS --target-dir /user/hduser,也不会出于某种原因。当我将目标作为本地文件系统时,它需要它。为什么呢?

2 个答案:

答案 0 :(得分:0)

Sqoop需要一个空的目标路径来保存文件。您给出的路径/ var / lib / mysql用作保存导入文件的hdfs路径。

/ user / hduser可能没有用,因为该目录可能存在,或者您没有创建权限的权限。尝试hadoop fs -mkdir来检查。

对于SUCCESS和部分文件,这里是个好文章

What are SUCCESS and part-r-00000 files in hadoop

答案 1 :(得分:0)

默认情况下,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 import \ --connect jdbc:mysql:// localhost / sqoopex8 \ - 表sqooptest \ --target-dir / path / to / your / desireddir \ -m 1

请查看文档here