parquet存入mysql_sqoop無法導出parquet文件到mysql

1.問題描述

在CDH集群中我們需要將Hive表的數據導入到RDBMS數據庫中,使用Sqoop工具可以方便的將Hive表數據抽取到RDBMS數據庫中,在使用Sqoop抽取Hive Parquet表時作業執行異常。

Sqoop抽數腳本:

sqoop export \--connect jdbc:mysql://localhost:3306/test_db \

--username root \--password 123456\--table mytest_parquet \--export-dir /user/hive/warehouse/mytest_parquet \-m 1

異常日志:

Sqoop: org.kitesdk.data.DatasetNotFoundException: Descriptor location does not exist: hdfs://nameservice1/user/hive/warehouse/mytest_parquet/.metadata

Exception: Descriptor location does not exist: hdfs://nameservice1/user/hive/warehouse/mytest_parquet/.metadata

at org.kitesdk.FileSystemMetadataProvider.checkExists(FileSystemMetadataProvider.java:562)

at org.kitesdk.FileSystemMetadataProvider.find(FileSystemMetadataProvider.java:605)

at org.kitesdk.ileSystemMetadataProvider.load(FileSystemMetadataProvider.java:114)

at org.kitesdk.FileSystemDatasetRepository.load(FileSystemDatasetRepository.java:197)

at org.kitesdk.data.Datasets.load(Datasets.java:108)

at org.kitesdk.data.Datasets.load(Datasets.java:140)

2.解決方法

1.將Sqoop抽數腳本修改為如下:

sqoop export \--connect jdbc:mysql://ip-172-31-22-86.ap-southeast-1.compute.internal:3306/test_db \

--username testuser \--password password \--table mytest_parquet \--hcatalog-database default \

--hcatalog-table mytest_parquet --num-mappers 1

參數說明:

--table:MySQL庫中的表名

--hcatalog-database:Hive中的庫名

--hcatalog-table:Hive庫中的表名,需要抽數的表

--num-mappers:執行作業的Map數

作業執行成功。

3.總結

目前通過Sqoop從Hive的parquet抽數到關系型數據庫的時候會報kitesdk找不到文件的錯,這是Sqoop已知的問題,參考SQOOP-2907:

該jira目前並沒有修復,如果要實現該功能,需要參考第二章的做法,使用hcatalog參數指定到Hive表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值