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

php+mysql 2012也买酒商城网站源码谷歌搜索引擎网址

php+mysql 2012也买酒商城网站源码,谷歌搜索引擎网址,做网站域名和空间费,高校里做网站的工作Hive分区表新增字段并指定位置 1、Hive分区表新增字段2、CASCADE关键字3、历史分区新增列为NULL问题 1、Hive分区表新增字段 Hive分区表新增字段并指定位置主要分为两步:新增字段和移动字段 1)新增字段 ALTER TABLE table_name ADD COLUMNS (col_name …

Hive分区表新增字段并指定位置

      • 1、Hive分区表新增字段
      • 2、CASCADE关键字
      • 3、历史分区新增列为NULL问题





1、Hive分区表新增字段


Hive分区表新增字段并指定位置主要分为两步:新增字段和移动字段

1)新增字段

ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...) [CASCADE|RESTRICT];

该命令允许用户将新列添加到现有列的末尾但在分区列之前

ADD COLUMNS命令只修改Hive的元数据,不修改实际数据。用户应该确保表/分区的实际数据布局符合元数据定义

2)更改(移动)字段

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];

该命令允许用户更改列的名称、数据类型、注释或位置,或它们的任意组合

CHANGE COLUMN命令只修改Hive的元数据,不修改实际数据。用户应该确保表/分区的实际数据布局符合元数据定义

以下是一些示例:

CREATE TABLE test_change (a int, b int, c int);// 将列a的名称更改为a1
ALTER TABLE test_change CHANGE a a1 INT;// 将列a1的名称更改为a2,数据类型更改为string,并将其放在列b后
ALTER TABLE test_change CHANGE a1 a2 STRING AFTER b;
// 新表的结构:b int, a2 string, c int// 将列c的名称更改为c1,并放在第一列
ALTER TABLE test_change CHANGE c c1 INT FIRST;
// 新表的结构:c1 int, b int, a2 string// 给列a1添加注释
ALTER TABLE test_change CHANGE a1 a1 INT COMMENT 'a1 comment';

2、CASCADE关键字


CASCADE中文为"级联",顾名思义就是有联系的。Hive官网对CASCADE关键字的描述如下:

CASCADE/RESTRICT子句在Hive 1.1.0中可用。CHANGE COLUMN CASCADE命令修改表元数据的列,并将相同的更改级联到所有分区元数据。RESTRICT是默认值,它只限制对表元数据的列更改

CHANGE COLUMN CASCADE子句将覆盖表分区的列元数据,而不管表或分区的保护模式如何,请谨慎使用

详情参考官网:https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=27362034#LanguageManualDDL-AlterColumn

什么意思呢?下面以一个示例演示不加CASCADE与添加CASCADE的区别

1)数据准备

create table test_cascade (id bigint, name string) partitioned by (dt string);
insert into table test_cascade partition (dt='2024-11-01') values (1, 'a');
insert into table test_cascade partition (dt='2024-12-01') values (2, 'b');
select * from test_cascade;
'''
id     name     dt
1      a        2024-11-01
2      b        2024-12-01
'''

2)不加CASCADE

alter table test_cascade add columns (age int);
insert into table test_cascade partition (dt='2024-11-01') values (1,'a',19);
insert into table test_cascade partition (dt='2024-12-01') values (2,'b',18);
insert into table test_cascade partition (dt='2025-01-01') values (3,'c',20);
select * from test_cascade;
'''
id     name     age      dt
1      a        NULL     2024-11-01
1      a        NULL     2024-11-01
2      b        NULL     2024-12-01
2      b        NULL     2024-12-01
3      c        20       2025-01-01
'''

3)添加CASCADE

alter table test_cascade add columns (age int) cascade;
insert into table test_cascade partition (dt='2024-11-01') values (1,'a',19);
insert into table test_cascade partition (dt='2024-12-01') values (2,'b',18);
insert into table test_cascade partition (dt='2025-01-01') values (3,'c',18);
select * from test_cascade;
'''
id     name     age      dt
1      a        NULL     2024-11-01
1      a        19       2024-11-01
2      b        NULL     2024-12-01
2      b        18       2024-12-01
3      c        20       2025-01-01
'''

据此,可得如下结论:

  • 不加CASCADE:插入数据时,已存在数据的分区新增字段值为NULL,无数据的分区新增字段值可以插入成功
  • 添加CASCADE:插入数据时,已存在数据的分区和无数据的分区新增字段值都可以插入成功

即就是,默认RESTRICT只变更新分区的表结构(新分区元数据),而CASCADE不仅变更新分区的表结构(新分区元数据),同时也级联变更旧分区的表结构(旧分区元数据)

3、历史分区新增列为NULL问题


实际应用中,通常会存在修改表结构的需求,例如,增加一个字段

如果使用如下语句新增列:

ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment]);

则可以成功添加列col_name,但如果数据表table_name中已有旧的分区,则该旧分区中的col_name将为NULL且无法更新,即使使用INSERT OVERWRITE也无效

出现这个问题的原因就是没有使用CASCADE关键字导致的。CASCADE不仅可以变更新分区的表结构(元数据),同时也会级联变更旧分区的表结构(元数据)

解决方法也很简单,只需要在原语句后面添加CASCADE关键字即可:

ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment]) CASCADE;

针对分区表新增字段不加CASCADE关键字时对于历史分区新插入的数据,新增的列数据都会显示为NULL,其它已有列的数据则显示正常

值得注意的是,如果还需要更改新增列的位置,也需要使用CASCADE关键字:

ALTER TABLE table_name CHANGE [COLUMN] col_name col_name data_type [COMMENT col_comment] AFTER column_name CASCADE;

另外,如果存储格式为Parquet,那么该新增列的数据都将为NULL,如果为TextFile格式,则不会出现这种情况



参考文章:https://blog.csdn.net/sx157559322/article/details/131950817


http://www.mmbaike.com/news/65544.html

相关文章:

  • 网站生成软件百度标记号码认证平台
  • 百度云如何做网站站长统计 网站统计
  • 廊坊网站建设开发抖音关键词推广
  • 池州网站建设费用外包公司是正规公司吗
  • 免费word模板seo优化检测
  • 曲靖做网站的公司北京网站优化效果
  • 龙岩网站设计一般要多久品牌网络推广
  • 佛山做网站格公司网络推广网站
  • 网站图片做多大手机系统流畅神器
  • 服装网站建设seo做得比较好的公司
  • 模板网站判定东莞seo项目优化方法
  • 阿里云 域名申请网站快速优化排名排名
  • 昆明网站制作广告网站
  • 电信做网站吗什么广告推广最有效果
  • 太原网站制作公司哪家好关键词优化百家号
  • 网站模板侵权问题百度推广平台
  • 被跨境电商骗了怎么投诉seo优化的网站
  • 教育网站模块建设游戏搜索风云榜
  • 唐山做网站哪家好做百度推广多少钱
  • 淄博网站制作设计公司软文范文大全
  • 商城网站内容模块有哪些外链屏蔽逐步解除
  • 做文案策划需要知道些什么网站百度商家
  • 南京自助网站建设网站统计分析工具的主要功能
  • 个人网站如何做淘客网站怎样创建自己的电商平台
  • 怎么用手机做一个网站百度快照推广排名
  • 怎么做素材设计网站促销活动推广方案
  • 平面设计的素材网站包就业的培训学校
  • 订单网站模板搜索指数的数据来源是什么
  • 网站建设用什么工具武汉seo排名公司
  • 珠海专业做网站公司百度成都总部