当前位置: 首页 > news >正文

唐山做网站多少钱wordpress+自定义主页

唐山做网站多少钱,wordpress+自定义主页,网站分页符素材,新闻发布平台有哪些TOC 【一】问题描述 Hive修改数据表结构的需求,比如:增加一个新字段。 如果使用如下语句新增列,可以成功添加列col1。但如果数据表tb已经有旧的分区(例如:dt20190101),则该旧分区中的col1将为…

@TOC

【一】问题描述

Hive修改数据表结构的需求,比如:增加一个新字段。

如果使用如下语句新增列,可以成功添加列col1。但如果数据表tb已经有旧的分区(例如:dt=20190101),则该旧分区中的col1将为空且无法更新,即便insert overwrite该分区也不会生效。

alter table tb add columns(col1 string);

【二】解决方法

增加col1时加上cascade关键字。示例如下:

alter table tb add columns(col1 string) cascade;

对于分区表,一定要加上cascade,否则其历史分区的元数据信息(metadata)将无法正常更新

【三】原理分析

新增字段操作只更改元数据信息,对存储的数据无影响。新增字段语句最后的[CASCADE|RESTRICT]关键字是可以选的,不指定时默认值是RESTRICT,表示新增字段只作用在表上;加上CASCADE表示新增字段同样作用在历史分区上。

CASCADE的作用是级联的意思,修改表字段的同时级联修改历史分区的字段信息。执行过新增的字段的语句后即可正常刷数据,对于历史版本的Hive也适用。

【1】建一张公共表并插入数据(数据源)

# 建表,id和name字段,并且有pt_day分区字段
CREATE EXTERNAL TABLE IF NOT EXISTS bi.test_common_1
(id          INT    COMMENT '编号',name        STRING COMMENT '姓名'
) COMMENT '修改Location测试'
PARTITIONED BY (pt_day STRING COMMENT '天分区')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
LINES TERMINATED BY '\n'
STORED AS ORC
LOCATION 'hdfs://hadoop102:8020/user/hive/warehouse/bi.db/test_common_1'
TBLPROPERTIES ("orc.compress"="ZLIB")
;# 往20240209分区插入两条数据
INSERT OVERWRITE TABLE bi.test_common_1
PARTITION (pt_day = '20240209')
VALUES(1, 'jack')
,(2, 'rose')
;# 往20240210分区插入两条数据
INSERT OVERWRITE TABLE bi.test_common_1
PARTITION (pt_day = '20240210')
VALUES(3, 'john')
,(4, 'mary')
;# 查询两个分区的数据
SELECTpt_day,id,name
FROM bi.test_common_1
WHERE pt_day IN ('20240209', '20240210')
ORDER BY pt_day,id
;

【2】建一张测试更新字段表并往一个分区插入数据

创建新表,只有id字段和pt_day分区字段,并且往20240209分区插入两条数据

CREATE EXTERNAL TABLE IF NOT EXISTS bi.test_add_column_1
(id        INT COMMENT '编号'
) COMMENT '修改Location测试表1'
PARTITIONED BY (pt_day STRING COMMENT '天分区')
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
LINES TERMINATED BY '\n'
STORED AS ORC
LOCATION 'hdfs://hadoop102:8020/user/hive/warehouse/bi.db/test_add_column_1'
TBLPROPERTIES ("orc.compress"="ZLIB")
;INSERT OVERWRITE TABLE bi.test_add_column_1
PARTITION (pt_day = '20240209')
SELECTid
FROM bi.test_common_1
WHERE pt_day = '20240209'
;SELECTid
FROM bi.test_common_1
WHERE pt_day = '20240209'
;

【3】测试表新增字段并往新分区插入数据

新增一个字段,并且往新增字段后的新分区里插入数据

ALTER TABLE bi.test_add_column_1 ADD COLUMNS (name STRING COMMENT '姓名');INSERT OVERWRITE TABLE bi.test_add_column_1
PARTITION (pt_day = '20240210')
SELECTid,name
FROM bi.test_common_1
WHERE pt_day = '20240210'
;

【4】刷新历史分区20240209,历史分区插入数据,查看新字段能不能刷新数据

INSERT OVERWRITE TABLE bi.test_add_column_1
PARTITION (pt_day = '20240209')
SELECTid,name
FROM bi.test_common_1
WHERE pt_day = '20240209'
;SELECTpt_day,id,name
FROM bi.test_common_1
WHERE pt_day IN ('20240209', '20240210')
ORDER BY pt_day,id
;

在这里插入图片描述

从查询结果可以看出,新增字段后,新的分区插入数据,以及重新刷新数据的历史分区,数据都可以正常查询。

这应该是这个版本的Hive做过优化,历史版本的Hive可能会出现pt_day = '20240209’查询结果为NULL的情况。

【5】查看表及分区的字段信息

DESC bi.test_add_column_1 PARTITION(pt_day = '20240209');DESC bi.test_add_column_1 PARTITION(pt_day = '20240210');

在这里插入图片描述
从上面的查询结果可以看出,pt_day = '20240209’和pt_day = '20240210’的分区字段信息不一致。

【四】注意事项

如果不是分区表,不可以加cascade,否则会报错

可以通过以下语句判断是否是分区表

show partitions bi.test_common_1
http://www.yayakq.cn/news/213615/

相关文章:

  • 做国际网站有什么需要注意的wordpress怎样上传目录本
  • 深圳福田网站建设专业公司长沙网站建设公司联系方式
  • 惠州网站建设信息开发一套小区多少钱
  • 建设工程合同履行的原则石家庄网站建设seo优化营销
  • 网络推广员有前途吗网站域名如何影响seo
  • 获取网站物理路径微信商店怎么开通
  • 小公司做网站需要注意什么国外房产中介网站
  • 网站建设服务费的摊销期限网站的配色技巧
  • 能自己做生物实验的网站闵行装饰
  • 手机网站建设文章网站建设运营公司排行
  • 仿商城版淘宝客网站源码如何在小程序开店铺
  • 网站怎么做缓存seo怎么提升关键词的排名
  • 用html5做商城网站怎么做企业画册模板
  • 中国空间站组成部分网页开发技术有哪些
  • 移动端网站制作搜一搜排名点击软件
  • 单页网站制作系统零售网站制作
  • 怎样修改公司网站内容wordpress 计算器插件
  • 南阳网站建设的公司黄冈网站建设价格
  • 网站推广协议网站模板psd素材
  • 免费创一个网站云南免费网站建设
  • 大型信息类PC网站适合vue做吗免费公司宣传册设计样本
  • 一般做网站用什么字体沈阳网站推广公司
  • 网站建设条件想学网站建设优化去哪
  • 网站建设优化扬州咸阳市城乡建设规划局网站
  • 苏州网站开发公司电话wordpress自媒体主题更新失败
  • 个人备案网站做盈利合法吗公式wordpress
  • wordpress网站制作教程视频没有地址如何注册公司
  • 小学网站源码php手机端wordpress怎么用
  • 甘肃省建设厅网站首页网站建设得花多少钱
  • 山西网站建设网站杭州市网站建设公司