sqoop - 导入表时遇到问题

Posted

技术标签:

【中文标题】sqoop - 导入表时遇到问题【英文标题】:sqoop - trouble importing tables 【发布时间】:2016-04-22 21:26:48 【问题描述】:

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

我使用以下命令从名为 sqoopex8 的数据库中从 mysql 导入了一个名为 sqooptest 的表:

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)。不过里面什么都没有。

接下来,凭直觉,在 Internet 上环顾四周,我发现 MySQL 将其所有 dbs 都保存在 /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 时,我看到两个文件-_SUCCESSpart-m-00000。这是为什么?为什么第一次没有成功。

另外,在第一次尝试中,即使我将目标指定为 HDFS --target-dir /user/hduser,由于某种原因它也没有接受它。当我将目标作为本地文件系统时,它会接受它。为什么?

【问题讨论】:

【参考方案1】:

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

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

对于成功和部分文件,这里是不错的帖子

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

【讨论】:

谢谢您的回复。如何删除所有 sqoop(所有目录和文件)清除 mysql 并重新开始?有什么建议吗?我认为没有任何效果,即使是在一个空目录中 以下选项很好。 1.通过脚本运行sqoop并使用hadoop fs -rmr删除文件夹然后sqoop-import 2.创建一个hive表并使用sqoop hcatalog import覆盖该表。以下是一些示例和文档docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.3.2/…sqoop.apache.org/docs/1.4.4/…***.com/questions/17334509/…【参考方案2】:

默认情况下,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 \ --表 sqooptest \ --target-dir /path/to/your/desireddir \ -m 1

请查看文档here 。

【讨论】:

以上是关于sqoop - 导入表时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

大数据(3j)Sqoop生产经验

大数据(3j)Sqoop生产经验

Sqoop 导入没有拆分

oozie sqoop 操作导入失败

使用 sqoop 导入数据,表名带有 $

Sqoop 增量导入“无法将文件附加到目标目录”