前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sqoop抽取Hive Parquet表数据到MySQL异常分析

Sqoop抽取Hive Parquet表数据到MySQL异常分析

作者头像
Fayson
修改2018-04-01 19:48:04
4K0
修改2018-04-01 19:48:04
举报
文章被收录于专栏:Hadoop实操

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject

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

异常日志:

代码语言:txt
复制
17/12/17 01:18:52 ERROR sqoop.Sqoop: Got exception running Sqoop: org.kitesdk.data.DatasetNotFoundException: Descriptor location does not exist: hdfs://nameservice1/user/hive/warehouse/mytest_parquet/.metadata
org.kitesdk.data.DatasetNotFoundException: Descriptor location does not exist: hdfs://nameservice1/user/hive/warehouse/mytest_parquet/.metadata
        at org.kitesdk.data.spi.filesystem.FileSystemMetadataProvider.checkExists(FileSystemMetadataProvider.java:562)
        at org.kitesdk.data.spi.filesystem.FileSystemMetadataProvider.find(FileSystemMetadataProvider.java:605)
        at org.kitesdk.data.spi.filesystem.FileSystemMetadataProvider.load(FileSystemMetadataProvider.java:114)
        at org.kitesdk.data.spi.filesystem.FileSystemDatasetRepository.load(FileSystemDatasetRepository.java:197)
        at org.kitesdk.data.Datasets.load(Datasets.java:108)
        at org.kitesdk.data.Datasets.load(Datasets.java:140)
        at org.kitesdk.data.mapreduce.DatasetKeyInputFormat$ConfigBuilder.readFrom(DatasetKeyInputFormat.java:92)
        at org.kitesdk.data.mapreduce.DatasetKeyInputFormat$ConfigBuilder.readFrom(DatasetKeyInputFormat.java:139)
        at org.apache.sqoop.mapreduce.JdbcExportJob.configureInputFormat(JdbcExportJob.java:84)
        at org.apache.sqoop.mapreduce.ExportJobBase.runExport(ExportJobBase.java:429)
        at org.apache.sqoop.manager.SqlManager.exportTable(SqlManager.java:931)
        at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:80)
        at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:99)
        at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
        at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
        at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
[ec2-user@ip-172-31-22-86 ~]$ 

2.解决方法


1.将Sqoop抽数脚本修改为如下:

代码语言:txt
复制
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数

2.修改后执行抽数作业

作业执行成功。

3.查看MySQL表数据

3.总结


目前通过Sqoop从Hive的parquet抽数到关系型数据库的时候会报kitesdk找不到文件的错,这是Sqoop已知的问题,参考SQOOP-2907:

https://issues.apache.org/jira/browse/SQOOP-2907

该jira目前并没有修复,如果要实现该功能,需要参考第二章的做法,使用hcatalog参数指定到Hive表。

为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.总结
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档