一、执行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相关推荐

  1. hive添加字段报conflicting lock

    昨天ETL开发的同事在给一个表添加字段的时候报错:conflictinglock present for xxx EXECLUSIVE mode,加了几次都失败,后来直接unlock tables后再 ...

  2. sqoop导出hive分区表字段到mysql报错:Can‘t parse input data: ‘0‘

    目的: 为了保留ads(应用层)的历史数据,所以把ads层的表建成了带分区的表. 带来的问题: sqoop导出不带分区字段的列,可以正常导出: sqoop导出带分区字段的列,就报错如下: Can't ...

  3. Hive 分区表 数据加载

    1. Hive表数据的导入方式 1.1 本地上传至hdfs 命令: hdfs dfs -put [文件名] [hdfs绝对路径] 例如:测试文件 test_001.txt 内容如下 在 hdfs 绝对 ...

  4. hive 中某个字段等于0_快速了解hive

    作者丨HappyMint 文章选摘:大数据与人工智能 这是作者的第7篇文章 本文主要针对从事大数据分析和架构相关工作,需要与hive打交道但目前对hive还没有进行深层次了解的小伙伴,希望本文会让你对 ...

  5. hive分区表详细介绍

    一,什么是分区表以及作用 数据分区的概念以及存在很久了,通常使用分区来水平分散压力,将数据从物理上移到和使用最频繁的用户更近的地方,以及实现其目的.                          ...

  6. hive 分区表select全部数据_Hive分区表实战

    1. Hive分区表Partition和Bucket,为了提升查询效率,前者是粗粒度的划分,后者是细粒度的划分. 建表语句中使用partitioned by指定分区字段 分区表有静态分区和动态分区两种 ...

  7. hive sqoop 分区导入_利用oozie,执行sqoop action将DB2中的数据导入到hive分区表中

    测试:利用oozie,执行sqoop action将DB2中的数据导入到hive分区表中. 需要注意的地方: 1,要添加hive.metastore.uris这个参数.否则无法将数据加载到hive表中 ...

  8. 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 ...

  9. 【Hive】Hive分区表

    分区作为一种提高数据操作灵活性的手段,被广泛应用于关系型数据库中.在Hive中我们同样可以采用分区的方式来提高数据操作效率,不同于关系型数据库(如Oracle),Hive的分区表既可以是内部表,也可以 ...

最新文章

  1. Redis-13Redis发布订阅
  2. 环形队列出队的元素怎么输出出来_队列的知识讲解与基本实现(数据结构)
  3. js设置radio选中
  4. freetype在Linux平台编译小记
  5. c++ 读文件_python中文件的使用
  6. 也谈Oracle异常: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小
  7. Redis NOAUTH Authentication required
  8. paddleocr识别VIN码
  9. 黑群晖一键生成视频缩略图
  10. 视频播放器软件哪个最好用?盘点6款Windows电脑上超级好用的本地视频播放器
  11. 第一行代码-第二版(郭霖著)笔记十一(Material Design)
  12. 用c语言编写程序相似性检测,程序代码相似性检测在论文抄袭判定中的应用
  13. 【NOIP 2015】斗地主
  14. 计应121--实训一【李智飞(27号)--李阳持(26号)--胡俊琛(13号)--曹吉(2号)】
  15. Flutter 本地图片加载不出来
  16. mysql存储过程之循环(WHILE,REPEAT和LOOP)
  17. C语言——第三章:C语言程序设计
  18. 第一章 概述_TCP-IP
  19. 面试笔记-都问了什么东西?
  20. 旅游系统(SSM框架+MySQL+Redis+VUE)后端代码

热门文章

  1. Mybatis(一)之概述
  2. go语言错误和异常处理,panic、defer、recover的执行顺序
  3. 2个案例,深度剖析百度文库,年赚100万无敌剑法(内送运营教程)
  4. Golang 新手入门教程(二):Go 常用开发工具介绍
  5. Muse-UI表格行样式的自定义
  6. 用树莓派Raspberry Pi 4B制作一个无线投屏器(20200803)
  7. windows文件比较命令
  8. Windows 系统中的文件路径格式
  9. 【NOI2022省选挑战赛 Contest11 A】魔法球(二分)
  10. 阿里社招两年前端面经