博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive 读取的Column值为NULL?!
阅读量:5843 次
发布时间:2019-06-18

本文共 640 字,大约阅读时间需要 2 分钟。

Hive0.10升级到0.11后我们发现当一个表加字段或者修改字段类型时,新加的分区可以读取到相应字段的值,但是老的分区该字段的值都为NULL(其实数据是在HDFS里的),翻下jira看到Hive0.11推出一个新feature(HIVE-3833)就是,也就是0.11之前每个分区的schema解析都是按照table来的,而这之后是每个分区的schema都独立的进行解析.

metastore层面:其实0.100.11schema是一致的:tbls(tbl_id,tbl_name,sd_id),sds(sd_id,cd_id),partitions(tbl_id,sd_id);这两个版本当table发生schema改变时都会改变其sds对应的cd_id指向新的schema,每次新建partitioncd_id都会继承自tablecd_id,不过2个版本的区别就是0.10在读取partition时仍然是按照tablecd_id对应的columns进行解析,而0.11是按照partition的,因此就导致了我们遇到的问题.

这样解决起来也比较简单:1.tbls上创建触发器来维护 2.或者后台写一个cron来维护;使得partitioncd_id保持和tbls的一致,定期purge columns.

本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1366071,如需转载请自行联系原作者

你可能感兴趣的文章
What is Cluster Aware Updating in Windows Server 2012?
查看>>
进老男孩的自我介绍和决心书
查看>>
线上Linux服务器运维安全策略经验分享
查看>>
Android一些问题的解决方案
查看>>
ios之UIToolBar
查看>>
centos 6.5 docker  安装
查看>>
C++静态局部对象
查看>>
一步步学习EF Core(3.EF Core2.0路线图)
查看>>
网络ASI
查看>>
Luogu P4707 重返现世
查看>>
目标与绩效管理实战专家胡立
查看>>
axios 中断请求
查看>>
2014手机分析图
查看>>
Linux PID 1 和 Systemd
查看>>
一元多项式相加
查看>>
commandLink/commandButton/ajax backing bean action/listener method not invoked (转)
查看>>
软件工作的大环境
查看>>
梅沙教育APP简单分析-版本:iOS v1.2.21-Nathaneko-佳钦
查看>>
Word中如何设置图片与段落的间距为半行
查看>>
JQuery this和$(this)的区别及获取$(this)子元素对象的方法
查看>>