HIVE分区表添加字段cascade 执行时间过长出现bug
一、执行hive分区表添加字段命令(背景)
alter table db_name.staging_user_log_minutes
add columns(`ext_main_business_line` string COMMENT '主业务线'
) cascade;
因为历史分区量太大,所以执行命令花了很长的时间,正好又有新的调度任务写入新分区,导致有的分区没有添加上新的字段
二、解决问题路径(通过HIVE元数据查找)
1、通过表名 找到 TBL_ID
mysql> select * from TBLS where TBL_NAME='staging_user_log_minutes' limit 3 \G
*************************** 1. row ***************************TBL_ID: 521582CREATE_TIME: 1555483202DB_ID: 86LAST_ACCESS_TIME: 0OWNER: pcsjobRETENTION: 0SD_ID: 1491906TBL_NAME: staging_user_log_minutesTBL_TYPE: EXTERNAL_TABLE
VIEW_EXPANDED_TEXT: NULL
VIEW_ORIGINAL_TEXT: NULLLINK_TARGET_ID: NULL
2、通过TBL_ID 找到 SD_ID
mysql> select * from PARTITIONS where TBL_ID='521582'
and PART_NAME like 'dt=2019-05-20/hh=11%' \G
*************************** 1. row ***************************PART_ID: 1234906CREATE_TIME: 1558321954
LAST_ACCESS_TIME: 0PART_NAME: dt=2019-05-20/hh=11/mm=00SD_ID: 1767457TBL_ID: 521582LINK_TARGET_ID: NULL
*************************** 2. row ***************************PART_ID: 1234920CREATE_TIME: 1558322569
LAST_ACCESS_TIME: 0PART_NAME: dt=2019-05-20/hh=11/mm=10SD_ID: 1767476TBL_ID: 521582LINK_TARGET_ID: NULL
*************************** 3. row ***************************PART_ID: 1234933CREATE_TIME: 1558323222
LAST_ACCESS_TIME: 0PART_NAME: dt=2019-05-20/hh=11/mm=20SD_ID: 1767480TBL_ID: 521582LINK_TARGET_ID: NULL
3、通过SD_ID 找到 CD_ID
mysql> select * from SDS where SD_ID in (1767457,1767476,1767480) \G
*************************** 1. row ***************************SD_ID: 1767457CD_ID: 574420INPUT_FORMAT: org.apache.hadoop.mapred.TextInputFormatIS_COMPRESSED:
IS_STOREDASSUBDIRECTORIES: LOCATION: hdfs://tesla-cluster/apps/hive/warehouse/staging_kafka.db/staging_user_log_minutes/dt=2019-05-20/hh=11/mm=00NUM_BUCKETS: -1OUTPUT_FORMAT: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormatSERDE_ID: 1767437
*************************** 2. row ***************************SD_ID: 1767476CD_ID: 537778INPUT_FORMAT: org.apache.hadoop.mapred.TextInputFormatIS_COMPRESSED:
IS_STOREDASSUBDIRECTORIES: LOCATION: hdfs://tesla-cluster/apps/hive/warehouse/staging_kafka.db/staging_user_log_minutes/dt=2019-05-20/hh=11/mm=10NUM_BUCKETS: -1OUTPUT_FORMAT: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormatSERDE_ID: 1767456
*************************** 3. row ***************************SD_ID: 1767480CD_ID: 574421INPUT_FORMAT: org.apache.hadoop.mapred.TextInputFormatIS_COMPRESSED:
IS_STOREDASSUBDIRECTORIES: LOCATION: hdfs://tesla-cluster/apps/hive/warehouse/staging_kafka.db/staging_user_log_minutes/dt=2019-05-20/hh=11/mm=20NUM_BUCKETS: -1OUTPUT_FORMAT: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormatSERDE_ID: 1767460
4、通过CD_ID 找到当前分区 是否添加上新的字段…
mysql> select * from COLUMNS_V2 where CD_ID='574421'
order by INTEGER_IDX desc limit 2 \G
*************************** 1. row ***************************CD_ID: 574421COMMENT: 主业务线
COLUMN_NAME: ext_main_business_lineTYPE_NAME: string
INTEGER_IDX: 146
*************************** 2. row ***************************CD_ID: 574421COMMENT: from deserializer
COLUMN_NAME: ext_is_member_nameTYPE_NAME: string
INTEGER_IDX: 145mysql> select * from COLUMNS_V2 where CD_ID='537778'
order by INTEGER_IDX desc limit 2 \G
*************************** 1. row ***************************CD_ID: 574421COMMENT: from deserializer
COLUMN_NAME: ext_is_member_nameTYPE_NAME: string
INTEGER_IDX: 145
*************************** 2. row ***************************CD_ID: 574421COMMENT: from deserializer
COLUMN_NAME: ext_is_memberTYPE_NAME: int
INTEGER_IDX: 144
通过上面结果可以看到 CD_ID=537778,没有添加上最新的字段
三、解决办法
INSERT INTO COLUMNS_V2 (CD_ID,COMMENT,COLUMN_NAME,TYPE_NAME,INTEGER_IDX)
VALUES (537778, '主业务线', 'ext_main_business_line', 'string', 146);
HIVE分区表添加字段cascade 执行时间过长出现bug相关推荐
- hive添加字段报conflicting lock
昨天ETL开发的同事在给一个表添加字段的时候报错:conflictinglock present for xxx EXECLUSIVE mode,加了几次都失败,后来直接unlock tables后再 ...
- sqoop导出hive分区表字段到mysql报错:Can‘t parse input data: ‘0‘
目的: 为了保留ads(应用层)的历史数据,所以把ads层的表建成了带分区的表. 带来的问题: sqoop导出不带分区字段的列,可以正常导出: sqoop导出带分区字段的列,就报错如下: Can't ...
- Hive 分区表 数据加载
1. Hive表数据的导入方式 1.1 本地上传至hdfs 命令: hdfs dfs -put [文件名] [hdfs绝对路径] 例如:测试文件 test_001.txt 内容如下 在 hdfs 绝对 ...
- hive 中某个字段等于0_快速了解hive
作者丨HappyMint 文章选摘:大数据与人工智能 这是作者的第7篇文章 本文主要针对从事大数据分析和架构相关工作,需要与hive打交道但目前对hive还没有进行深层次了解的小伙伴,希望本文会让你对 ...
- hive分区表详细介绍
一,什么是分区表以及作用 数据分区的概念以及存在很久了,通常使用分区来水平分散压力,将数据从物理上移到和使用最频繁的用户更近的地方,以及实现其目的. ...
- hive 分区表select全部数据_Hive分区表实战
1. Hive分区表Partition和Bucket,为了提升查询效率,前者是粗粒度的划分,后者是细粒度的划分. 建表语句中使用partitioned by指定分区字段 分区表有静态分区和动态分区两种 ...
- hive sqoop 分区导入_利用oozie,执行sqoop action将DB2中的数据导入到hive分区表中
测试:利用oozie,执行sqoop action将DB2中的数据导入到hive分区表中. 需要注意的地方: 1,要添加hive.metastore.uris这个参数.否则无法将数据加载到hive表中 ...
- oracle ||#039; where #039;||condition;,帝国cms后台添加字段提示#039;Row size too large. The maximum row size...
今天在帝国cms后台创建系统模型,添加字段时报了一个错误,ERROR 1118 (42000): Row size too large. The maximum row size for the us ...
- 【Hive】Hive分区表
分区作为一种提高数据操作灵活性的手段,被广泛应用于关系型数据库中.在Hive中我们同样可以采用分区的方式来提高数据操作效率,不同于关系型数据库(如Oracle),Hive的分区表既可以是内部表,也可以 ...
最新文章
- Redis-13Redis发布订阅
- 环形队列出队的元素怎么输出出来_队列的知识讲解与基本实现(数据结构)
- js设置radio选中
- freetype在Linux平台编译小记
- c++ 读文件_python中文件的使用
- 也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
- Redis NOAUTH Authentication required
- paddleocr识别VIN码
- 黑群晖一键生成视频缩略图
- 视频播放器软件哪个最好用?盘点6款Windows电脑上超级好用的本地视频播放器
- 第一行代码-第二版(郭霖著)笔记十一(Material Design)
- 用c语言编写程序相似性检测,程序代码相似性检测在论文抄袭判定中的应用
- 【NOIP 2015】斗地主
- 计应121--实训一【李智飞(27号)--李阳持(26号)--胡俊琛(13号)--曹吉(2号)】
- Flutter 本地图片加载不出来
- mysql存储过程之循环(WHILE,REPEAT和LOOP)
- C语言——第三章:C语言程序设计
- 第一章 概述_TCP-IP
- 面试笔记-都问了什么东西?
- 旅游系统(SSM框架+MySQL+Redis+VUE)后端代码