spark写hive表遇到的字段问题

5,018次阅读
没有评论

共计 451 个字符,预计需要花费 2 分钟才能阅读完成。

 

问题:spark版本1.6,将dataframe写到hive表中,hive表事先已经在库中建立好了,所以不需要重复建表,在使用saveAsTable函数保存时,hive的表字段名都被重写为_1之类

解决方法:出现上述问题的原因是dataframe没有schema,也就是dateframe的列名称,对应数据表的字段名,如果你的dataframe没有定义,那么spark默认会使用_1,_2之类的来代替,这些字段名在hive表中你是无法使用的,这样你想查询数据使用以下语句查询时会报错

select _1 from table;

所以解决上述问题就需要指定我们的dataframe 的schema,结构化数据就要有结构化数据的样子

我是rdd转化为dataframe使用的是toDF,使用如下语句就可以实现

toDF("s_1","s_2","s_3")

这样我们在保存数据到hive表的时候就不会出现字段的偏差了,当然为了保持一致toDF中给出的要与hive中的一致,如果不一致,hive表会被toDF中的定义的字段覆盖

正文完
请博主喝杯咖啡吧!
post-qrcode
 
admin
版权声明:本站原创文章,由 admin 2018-04-09发表,共计451字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码