| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> cdp hive3.1表为事务表和外部表的问题 -> 正文阅读 |
|
[大数据]cdp hive3.1表为事务表和外部表的问题 |
参考文章 Apache Hive 3 tablesTable type definitions and a diagram of the relationship of table types to ACID properties clarifies Hive tables. The location of a table depends on the table type. You might choose a table type based on its supported storage format.https://docs.cloudera.com/cdp-private-cloud-base/latest/using-hiveql/topics/hive_hive_3_tables.htmlCDP中的Hive3系列之Hive3使用指南-阿里云开发者社区https://developer.aliyun.com/article/786518 ? 注意 我的cdp配置 这个外表路径我修改过 最初好像是/warehoue/tablespace/external/hive? 注意3.1的hive有如下默认参数 ?
?上面两个参数是外部表和内部表默认的存储格式。
注意如图 上述参数? set hive.create.as.insert.only; --事务表只支持插入 set hive.create.as.acid; --事务表支持crud 支持delete update 默认true -- 该参数为false 那么默认你创建的表是只支持insert。(即使存储格式为orc) --该参数为true,默认创建的事务表为支持curd,如果指定格式非orc则只支持insert set hive.strict.managed.tables; --是否为严格内部表模式 --默认false -- 这个参数是真的难搞。原文翻译也不难,说的是 -- 该参数=true 只有事务表会变成内部表。 --该参数=false??解释又不说了。所有表都可以是内部表? set?hive.create.as.external.legacy;--是否采用建表默认为外表方式 默认false。 --这个参数=true 就等于set hive.create.as.acid=false +?set hive.create.as.insert.only=false 1.创建crud的事务表create table cc1(id int ); 内部表+事务表crud+存储格式orc 2.创建insert-only的事务表几种办法 1.CREATE TABLE T2(a int, b int)? STORED AS ORC? TBLPROPERTIES ('transactional'='true', ?2.CREATE TABLE T2(a int, b int) stored as textfile; --指定存储格式为非orc 3.set hive.create.as.acid=false;?CREATE TABLE T2(a int, b int); --指定默认事务表为insert-only 3.创建一个外表。 两种办法 1.create external table cc(a int ,b int ) 这个外部表和hive1 hive2 的外部表基本一样? 2. set hive.create.as.insert.only=false; set hive.create.as.acid=false; ?create table cc_1(a int ,b int ); ? 注意这里 创建的是外部表? 存储格式为orc(这里我也没想明白。。按道理应该是text的) 注意这个参数external.table.purge='TRUE'这个的意思是drop external table的时候 也会删除外部表指向的数据。 看到这里大家可能有点懵了。 1.我就想创建一个非事务内部表可以吗? 不可以直接创建。 但是你可以create external table cc(a int ,b int ); alter table cc set TBLPROPERTIES ('EXTERNAL'='FALSE'); ?无external 也无 transcational。 上面这种方式很麻烦。那么 set hive.create.as.insert.only=false; set hive.create.as.acid=false; 然后create table cc(a int ,b int ); 这样除了他是个外部表,但是实际和我们hive2.x建的内部表功能也一样。同时这个表也能被spark访问。。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:42:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |