sqoop抽取mysql的数据到hive表里面,字段内容被自动截取,导致字段不全的问题解决

话说,今天央视重新转播NBA,写篇博客纪念一下这个重要的日子,湖人的表现就呵呵了!!!!

强行转到博客的主题来,拒绝做标题党

mysql的字段属性:该字段能存下的值比如:“山 东”

`province` varchar(3) NOT NULL COMMENT '省份'

用sqoop
 

sqoop import --connect "jdbc:mysql://xxxxxx:3306/xxxxxx?tinyInt1isBit=false&zeroDateTimeBehavior=convertToNull" --username xxxxxx --password xxxxxx \
--query  "
select 
province
from xxxxxx  where \$CONDITIONS" \
--split-by id \
--m 10 \
--drop-and-create-hcatalog-table \
--hcatalog-table xxxxxx\
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")'

抽取到hive以后,hive 的varchar(3) 只能存下一个中文汉字: “山”  后面的内容被自动截去了

查看hive的varchar和string的区别

1.Hive-0.12.0版本引入了VARCHAR类型,VARCHAR类型使用长度指示器(1到65355)创建,
长度指示器定义了在字符串中允许的最大字符数量。
如果一个字符串值转换为或者被赋予一个varchar值,
其长度超过了长度指示器则该字符串值会自动被截断。

2.STRING存储变长的文本,对长度没有限制。

在shell脚本中加入参数:--map-column-hive province=string \ 将该字段的类型转为string就可以解决这个问题了

--m 10 \
--map-column-hive province=string \
--drop-and-create-hcatalog-table \

有田不耕仓廪虚,有书不读子孙愚。


版权声明:本文为weixin_42312342原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。