hive物化视图

news/2024/10/21 10:16:14/

-- 物化视图 需要事务支持的
-- 物化视图 需要事务表上创建

-- 解决'create materialized view'报错(表前提必须是orc): Automatic rewriting for materialized view cannot be enabled if the materialized view uses non-transactional tables
ALTER table tb1111 SET TBLPROPERTIES ('transactional'='true');
ALTER TABLE tb1111 SET FILEFORMAT orc;
-- 开启环境 事务支持 否则select报错
set hive.support.concurrency=true;
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;

set hive.execution.engine=mr; -- 根据你实际情况

-- 规避报错: java.io.IOException: [Error 30022]: Must use HiveInputFormat to read ACID tables (set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat)
-- 对应的datagrip直接报错是: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;

-- 新建物化视图
create materialized view view_mate_1
stored as parquet
as
select * from tb1111;

select * from view_mate_1;
-- +------+---------------------------+
-- |name |info |
-- +------+---------------------------+
-- |thomas|[{"k1":"v1"},{"k2":"v2"}] |
-- |peter |[{"k4":"v4"},{"k66":"v66"}]|
-- +------+---------------------------+

insert into tb1111 values ('name_new','info_new');

select * from tb1111;
-- +--------+---------------------------+
-- |name |info |
-- +--------+---------------------------+
-- |name_new|info_new |
-- |thomas |[{"k1":"v1"},{"k2":"v2"}] |
-- |peter |[{"k4":"v4"},{"k66":"v66"}]|
-- +--------+---------------------------+


select * from view_mate_1; -- 可以看出 物化视图不会自动更新
-- +------+---------------------------+
-- |name |info |
-- +------+---------------------------+
-- |thomas|[{"k1":"v1"},{"k2":"v2"}] |
-- |peter |[{"k4":"v4"},{"k66":"v66"}]|
-- +------+---------------------------+

-- 物化视图的生命周期 超过1s 自动重新生成物化视图结果 https://techcommunity.microsoft.com/t5/analytics-on-azure-blog/hive-materialized-views/ba-p/2502785
-- 我测试没生效
-- SET hive.materializedview.rewriting.time.window=1min; -- 默认0min
-- ALTER table view_mate_1 SET TBLPROPERTIES ('hive.materializedview.rewriting.time.window'='1min');

-- 手动刷新物化视图
ALTER MATERIALIZED VIEW view_mate_1 REBUILD;
-- 可以看到 结果同步并正确了
select * from view_mate_1;
-- +--------+---------------------------+
-- |name |info |
-- +--------+---------------------------+
-- |name_new|info_new |
-- |thomas |[{"k1":"v1"},{"k2":"v2"}] |
-- |peter |[{"k4":"v4"},{"k66":"v66"}]|
-- +--------+---------------------------+

--------------


http://www.ppmy.cn/news/66099.html

相关文章

JVM-类加载机制

类的生命周期 ​ 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,**它在某些情况下可以在初始化阶段之后开始,这是为…

Redis高可用系列——Set类型底层详解

文章目录 概述intsetintset 和 hashtable 的转换为什么加入了listpackhashtable 的空间开销高hashtable 的碰撞概率高intset 、listpack和hashtable的转换 概述 在讲解set结构之前,需要先说明一下set结构编码的更替,如下 在Redis7.2之前,se…

理解和使用Java中的枚举

枚举是一种特殊的数据类型,用于定义一组具名的常量。Java中的枚举类型可以包含多个枚举常量,每个常量都具有唯一的名称和值。本文将详细介绍Java中的枚举,包括为什么要使用枚举、枚举的好处、如何定义和使用枚举等。 为什么要使用枚举&#…

【计算机视觉 | ViT-G】谷歌大脑提出 ViT-G:缩放视觉 Transformer,高达 90.45% 准确率

文章目录 一、简介二、如何做到的?三、扩展数据四、「head」 的解耦权重衰减五、通过移除 [class] token 节省内存六、实验结果6.1 将计算、模型和数据一起扩展6.2 ViT-G/14 结果 论文地址为: https://arxiv.org/pdf/2106.04560.pdf一、简介 视觉 Trans…

Linux安装Kafka

本文介绍Linux安装Kafka。 1.Kafka简介 Kafka也是开源与Apache开源基金会的项目,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统。 在百度百科是这样介绍的: Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala…

全面理解哈希,哈希的底层原理是如何实现的,哈希题型的做题思路与题目清单(不断更新)

什么是哈希 哈希(Hash)是一种算法,它接受一个输入(或“消息”),并返回一个固定大小的字符串。这个输出字符串的大小通常以字节为单位,输出的内容看起来是随机的且整个过程是单向的。 哈希的一…

知识变现海哥:掌握这四个步骤,轻松实现知识变现

你是否有过这种感受,看了很多书,网上报课花了很多钱,课程屯了很多,可是依然很难变现,问题出在哪里呢? 海哥写这本《知识变现道法术器》将为你揭开答案。 海哥,国内知名知识变现创业教练&#x…

Ansys Lumerical | 单行载流子光电探测器仿真方法

综述 在本例中,我们将研究混合硅基光电探测器的各项性能。单行载流子(uni-traveling carrier,UTC)光电探测器(PD)由InP/InGaAs制成,其通过渐变耦合的方式与硅波导相连。在本次仿真中&#xff0c…