sqoop导入奇怪的错误

Posted

技术标签:

【中文标题】sqoop导入奇怪的错误【英文标题】:Sqoop import strange error 【发布时间】:2018-02-08 14:47:39 【问题描述】:

我有一个 hive 外部表 n1,其位置设置为 /user/cloudera/n1。我还有一个名为n1mysql 表。现在,当我尝试将 n1 (MySQL) 导入为 n2 (Hive) 时,我收到了这个奇怪的错误 /user/cloudera/n1 already exists

[cloudera@quickstart ~]$ sqoop import --table n1 --connect jdbc:mysql://localhost/retail_db --username root --password cloudera --hive-import --hive-table n2 -m 1

18/02/08 06:34:05 ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://quickstart.cloudera:8020/user/cloudera/n1 already exists
    at org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:146)

【问题讨论】:

您要覆盖 hive 中的表吗?还是追加? 该点既不是覆盖也不是追加。 删除 hdfs 目录并重新运行作业。 ***.com/questions/38649071/…gchandra.com/error-messages/… 您好 Roh,感谢您的帮助。但我应该请您仔细阅读这个问题以及表名。我要导入的表是n1n2。现在阅读错误。 【参考方案1】:

这并不奇怪,这就是 Sqoop 的工作原理。当您使用 Sqoop 将表导入配置单元时,它将在用户主目录中以表的名称创建一个暂存文件,在您的情况下是 /user/cloudera/n1 这就是问题所在。

您应该移动您的外部表路径,或者您应该使用--targer-dir 在其他目录中导入表,然后在其上创建配置单元表。

【讨论】:

以上是关于sqoop导入奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

Sqoop 导入错误:UnsupportedClassVersionError CDH 5.16

Sqoop 导入语句

sqoop 导入未识别显示 ClassNotFountException 错误的 mysql 表

在 Hadoop 2.7.3 上执行简单 SQOOP 导入命令时出现 Sqoop 错误

Sqoop 导入错误 Error: java.io.IOException: SQLException in nextKeyValue

Sqoop - 错误工具.ImportTool:导入失败:尝试从 SQL Server 导入时无法转换 SQL 类型 2005