

Hive说我变了,Spark说不你没变
source link: https://blog.51cto.com/u_14177015/5155808
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Hive说我变了,Spark说不你没变
原创大家好,我是怀瑾握瑜,一只大数据萌新,家有两只吞金兽,嘉与嘉,上能code下能teach的全能奶爸
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
我说:我要买鼠标,领导的声音飘来:你姑娘要交伙食费了
我说:我要买键盘,领导的声音飘来:你姑娘要学舞蹈了
我说:我要买手机,领导的声音飘来:你姑娘要学钢琴了
我说:好的祖宗们,谁让卡在你们手里,你们说的算。。
今天写了一个spark程序,其实很简单,就是查询一张表一天的数据,遍历一下,计算个结果,然而放到大环境里运行缺报错了。
报错的现象很是诡异,明明看到SQL只查询一天,但缺直接扫描整个表的全部数据,然后还返回driver里,最后直接内存溢出,看DAG也是在查询阶段就执行了collection。
通过查资料,修改SQL,一溜十三张试了一上午,还是没有效果,以为还是程序或者sql的问题,但一直没有查询到原因。
2.还有意外收获
下午还在调查问题的我,突然收到了运维的通知,Flume落盘的数据太多有积压,已经报警了,调查下发现是数据落hive的程序报错了。
详细查看日志,发现和上午的程序的日志一样,都是查询表的全部数据,再看下报错的时间,开始回想有过什么操作。
上午因为需求给hive表增加了一个字段,这在以前也进行过,但是没有问题啊,而且插入字段后,我还通过
Presto的小工具查询过数据,新增的字段已经有数据了。
进入hive命令行,查看表的创建信息
发现在字段列表中,新增的字段已经存在,再往下看,发现spark.sql.sources.schema.part.0对应的字符串中居然没有这个字段。
我也查了一下以前add column的几张表,对应的字符串里都有新增的字段,这个表却没有。
3.解决问题
现在的现象就好比:
hive说:我已经变了,你看人家presto就懂我,可以直接读我的信息
spark说:你不说,我怎么知道啊,我只读我的缓存里的,既然没有,就只能从头开始调查了
好吧,这个问题让我想起了很多经历。
试过了几种方式,比如:
- 修改字段名称,然后再改回来
- 刷新数据,msck repair table table_name
- 用spark.catalog().refreshTable("table_name")
均无效果,最后想到两个绝杀方案。
3.1重新建表
重新建表肯定是可以的,毕竟表都重建了,那原数据肯定重新刷新了。
当前所有表都是外部表,其实重建完全没有影响,但这样毕竟不优雅,而且万一表不是外部表,就肯定无法使用这个方案。
本着工匠精神,再寻找下一个方案。
3.2修改hive元数据
通过修改hive的原数据,更新schema字段的值,使之变成正确的内容。
SELECT * FROM dbs WHERE name = 'db_name';
--查询对应表的ID
select * from tbls where TBL_NAME='table_name' and db_id = 'db_id';
--通过 table_id 查找 对应的schema 信息
select * from table_params where TBL_ID=table_id and PARAM_KEY='spark.sql.sources.schema.part.0';
//通过 修改schema ,把缺少的字段按照格式添加进去即可。
UPDATE table_params SET PARAM_VALUE='............' where TBL_ID=table_id and PARAM_KEY='spark.sql.sources.schema.part.0'
至此,问题解决,但这个问题是否还会复现,有待观察。
如果您喜欢我的文章,可以[关注⭐]+[点赞👍]+[评论📃],您的三连是我前进的动力,期待与您共同成长~
可关注公众号【怀瑾握瑜的嘉与嘉】,获取资源下载方式
Recommend
-
49
读书不易,且读且珍惜。
-
45
Home Blog
-
8
How to query external hive Metastore From Spark ...
-
13
Nic Carter 作为 Castle Island Ventures 的合伙人以及加密数据聚合提供商 Coin Metrics 的联创深耕于宏观加密经济学多年。Castle Island Venture 注重于投资加密基建并曾投资借贷平台 BlockFi,而 Coin Metrics 作为行业内领先的数据提供...
-
3
桔妹导读: 在滴滴S QL任务从Hive迁移到Spark后,Spark SQ...
-
11
数据分析知识补充:Hadoop、YARN、Spark、Hive 发表于 2020-12-11...
-
4
起点十九岁了,网络文学哪里变了哪里没变? 七点到九点,十七点到十九点,是交通最为拥挤的时候。沙丁鱼罐头一般的地铁上,无数人彼此摩肩接...
-
6
孙宇晨没变,世界却变了
-
8
【spark, Hive, Hadoop, yarn】汇总 2018年03月27日 Author: Guofei 文章归类: 1-1-算法平台 ,文章编号: 153 版权声明:本文作者是郭飞。转载随...
-
4
深度 | 被 LVMH收购八年来,Loro Piana 变了还是没变? 刘隽 2021-09-03 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK