Sqoop抽数到Hive表异常分析

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1.问题描述

使用Sqoop抽取MySQL数据到Hive表时,抽取语句正常执行但数据没有写入Hive的表中,执行的Sqoop抽数脚本如下:

export HADOOP_USER_NAME=hive
sqoop import \
--connect "jdbc:mysql://cdh02.fayson.com:3306/cm" \
--username cm \
--password password \
--table HOSTS \
--fields-terminated-by ',' \
--target-dir /user/hive/warehouse/hive_hosts \
--delete-target-dir \
--hive-import \
--hive-overwrite \
--hive-table hive_hosts \
--m 1 \
--input-null-string '\\N' \
--input-null-non-string '\\N'

(可左右滑动)

在命令行执行上述Sqoop脚本,显示作业正常执行

执行结果显示文件数和数据大小均为0,登录Hive查询生成的hive_hosts表

2.异常处理及分析

1.在Sqoop抽数的脚本中存在target-dir参数,指向的HDFS数据目录,为hive_hosts表的仓库目录,将target-dir参数去掉执行

脚本执行成功

如上脚本的日志可以看到,向HDFS写入一个数据文件,文件大小481Byte。

2.使用hive命令查看hive_hosts表,数据已正常的抽取到hive_hosts表中

target-dir参数说明及影响:

在Sqoop抽数脚本中,指定了target-dir目录Sqoop抽取的数据会写到target-dir指定的目录,在Sqoop完成数据抽取后会将target-dir目录的数据load到Hive表对应的仓库目录并删除target-dir目录及数据。因为在上述异常中我们指定的target-dir目录与Hive表的仓库目录一致,所以会导致Sqoop抽数成功,但对应的Hive表中无数据问题。

Sqoop脚本中如果不指定target-dir目录时,默认会将抽取的数据写入到/user/{username}/{db_tablename}目录下。

3.总结

1.使用Sqoop抽数到Hive表,如果使用target-dir指定HDFS数据抽取目录时不能设置目标目录与hive表的仓库目录一致,否则会导致抽取的数据被Sqoop删除。

2.Sqoop抽数时如果不指定target-dir目标HDFS目录时,默认会将抽取的数据写入到/user/{username}/{DB_TABLENAME}目录下。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

如何在Hue中调优Impala和Hive查询

Hue中使用Hive和Impala进行查询,在使用完Hue后退出登录,会出现Hive和Impala的暂用的资源未释放。本篇文章Fayson主要针对该问题在Hue...

1.6K40
来自专栏Hadoop实操

Sentry赋予server1权限给hive以外用户时ACL不同步问题分析

在使用Sentry赋予server1所有权限给hive以外的用户时(如:fayson用户默认用户组也是fayson),通过Hue使用fayson用户登录,Sen...

63450
来自专栏分布式系统和大数据处理

配置Hive使用MySql存储元数据

默认情况下,Hive会使用Derby来存储元数据(主要是表、列、分区Partition的信息)。Derby是一个嵌入式的本地数据库,只能单进程进行访问,不允许多...

29850
来自专栏有困难要上,没有困难创造困难也要上!

Hadoop3-分布式模式安装

31650
来自专栏Hadoop实操

如何在CDH集群中安装Hive2.3.3

78930
来自专栏Hadoop实操

如何为Hive2启用Kerberos认证

44620
来自专栏Hadoop实操

如何在Hue中集成配置Hive2.3.3服务

21060
来自专栏Hadoop实操

如何集成OpenLDAP+Sentry.docx

前面Fayson讲了如何安装OpenLDAP及CDH集群集成OpenLDAP等一系列文章,本篇文章主要介绍集成OpenLDAP后的CDH集群在启用Sentry服...

65240
来自专栏Hadoop实操

如何在退出Hue后关闭Spark会话

Hive配置了Spark作为默认执行引擎,在通过Hue执行Hive查询后,退出Hue后Spark的Session并为随着Hue的退出而关闭,操作如下:

38230
来自专栏JAVA技术站

Sqoop的安装与Mysql的数据导入到hdfs框架中

Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将...

18010

扫码关注云+社区

领取腾讯云代金券