错误:使用 Sqoop 将所有表从 MariaDB 导入 Hive 数据库时文件路径无效

Posted

技术标签:

【中文标题】错误:使用 Sqoop 将所有表从 MariaDB 导入 Hive 数据库时文件路径无效【英文标题】:Error: Invalid file path while importing all tables from MariaDB to Hive Database using Sqoop 【发布时间】:2020-09-24 09:59:07 【问题描述】:

这是我使用 sqoop 的导入命令:

sqoop import-all-tables --connect jdbc:mysql://10.11.11.15:6306/siki_asmet?serverTimezone=Asia/Jakarta --username micronics -P --hive-import --warehouse-dir /warehouse/siki --hive-database siki_ods --exclude-tables "Sheet1$" --m 1;

当我运行上述命令时,我收到以下错误:

SemanticException Line 1:17 Invalid path ''hdfs://master.lpjk.com:8020/warehouse/siki/_asdamkindo_personal_ska_pendidikan'':
No files matching path 
hdfs://master.lpjk.com:8020/warehouse/siki/_asdamkindo_personal_ska_pendidikan (state=42000,code=40000)

但是当我再次运行相同的 sqoop 命令时,它说文件已经存在。

【问题讨论】:

你能把--warehouse-dir参数去掉试试看吗? 我做到了,但没有运气。同样的错误 【参考方案1】:

我解决了我的问题。在我的例子中,其中一个 talbes 的名称以字符下划线“_”开头,因此存在一个问题,即在存储文件副本的 hdfs 目录的路径中自动添加了 2 个单引号。

我通过删除下划线字符更改了列的名称,现在我可以将表导入 Hive 数据库。我认为像这样的特殊字符在 Hive 或 HDFS 中不容易解析。

【讨论】:

以上是关于错误:使用 Sqoop 将所有表从 MariaDB 导入 Hive 数据库时文件路径无效的主要内容,如果未能解决你的问题,请参考以下文章

使用 sqoop 将表从 RDBMS 导入 HIVE 后约束是不是仍然存在?

使用 KSQL 将表从 Kafka 转储到 MariaDB

将没有数字 ID 的非常大的表从 MySQL 加载到 S3

使用 Sqoop 将表从 AWS RDS 移动到 AWS EMR 的问题

如何使用 Java 将表从 MySQL 导入 Hive?

14_sqoop数据导入