hive的cascade使用解释

最近看到涉及到hive表字段新增,项目组其他人员让我add columns后加 cascade,这个我以前见到过,但是我一般没有用,也没出问题,那就研究下。

网上大多数的说法就是分区表加字段需要级联,原因是,你add column只针对后面的新增分区,历史分区没有加上字段,后面你插入数据也无法查询。

实践是检验真理的唯一标准。

复制代码
drop table if exists cc_test.cascade_1;
create table cc_test.cascade_1(
                                  id string ,
                                  name string
)
    partitioned by (bd_date string)
stored as parquet ;

insert into cc_test.cascade_1(id, name, bd_date) VALUES ('1','1','1'),('2','2','2');

alter table cc_test.cascade_1 add columns (sex string ) ;

insert into cc_test.cascade_1(id, name,sex, bd_date) VALUES ('11','11','11','1'),('3','3','3','3');

select * from cc_test.cascade_1

擦 id=11 的这条数据的sex确实没有显现出来,难道我真的错了?

加了级联cascade 就好了。

其实不然,只需将表的存储类型改为orc即可。

说明了parquet由于存储类型的问题,add columns的需要加cascade

但是orc不需要的。

直接去官网看下cascade解释

ADD COLUMNS lets you add new columns to the end of the existing columns but before the partition columns. This is supported for Avro backed tables as well, for Hive 0.14 and later.

-- add columns 只支持在列的最后和分区字段前加列。

REPLACE COLUMNS removes all existing columns and adds the new set of columns. This can be done only for tables with a native SerDe (DynamicSerDe, MetadataTypedColumnsetSerDe, LazySimpleSerDe and ColumnarSerDe). Refer to Hive SerDe for more information. REPLACE COLUMNS can also be used to drop columns. For example, "ALTER TABLE test_change REPLACE COLUMNS (a int, b int);" will remove column 'c' from test_change's schema.

--这个是repalce 和change的用法

The PARTITION clause is available in Hive 0.14.0 and later; see Upgrading Pre-Hive 0.13.0 Decimal Columns for usage.

-- 对某个分区的操作

The CASCADE |RESTRICT clause is available in Hive 1.1.0. ALTER TABLE ADD|REPLACE COLUMNS with CASCADE command changes the columns of a table's metadata, and cascades the same change to all the partition metadata. RESTRICT is the default, limiting column changes only to table metadata.

这里说的是默认是restrict 默认只改表的数据,cascade改表的元数据和分区的元数据

但是这里并没有说哪些类型的表不需要改?

ALTER TABLE ADD or REPLACE COLUMNS CASCADE will override the table partition's column metadata regardless of the table or partition's protection mode. Use with discretion.

The column change command will only modify Hive's metadata, and will not modify data. Users should make sure the actual data layout of the table/partition conforms with the metadata definition.

经过测试 textfile和parquet 需要加,orc和avro不需要,当然你要全部加上也没啥。

相关推荐
程序员大阳3 小时前
副队长大数据教程(7)--Hadoop 集群角色配置逻辑详解
大数据·hadoop·分布式·集群·配置·角色·逻辑
ha_lydms4 小时前
String Functions(字符串函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
RestCloud1 天前
数据同步零中断:ETL服务宕机重启后异常任务自动重跑
数据仓库·mysql·etl·etlcloud·数据传输·etl工具
泡干脆面就番茄1 天前
Hive分区表与分桶表:大数据查询提速的第一把钥匙
大数据·数据仓库·hive·hadoop
chde2Wang1 天前
hadoop部署错误-namenode address dfs.namenode.servicerpc-address not configured
java·大数据·hadoop
SelectDB技术团队2 天前
Apache Doris 基于 Lance 的向量检索深度解析
数据库·数据仓库·数据分析·湖仓一体·apache doris·lakehouse·多模湖仓
泡干脆面就番茄2 天前
Hive-DML:Load-Insert-Export-Import四种数据进出方式
大数据·数据仓库·hive·hadoop
SelectDB技术团队2 天前
日志场景 Elasticsearch 替换实操:建表、索引、写入链路与查询改写的完整参数
大数据·数据库·数据仓库·elasticsearch·全文检索·日志分析·apache doris
省钱兄--zs3 天前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构
省钱兄--zs3 天前
无人自助拼豆系统架构设计与功能实现落地部署全流程实战指南
java·数据仓库·spring boot·系统架构·需求分析