Hive orc与parquet的区别 orc如何支持事物
Posted 二十六画生的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive orc与parquet的区别 orc如何支持事物相关的知识,希望对你有一定的参考价值。
区别:
1 orc的数据存储的文件更小。
2 orc支持事物(ACID和delete/update操作,当然还需要满足其他条件才行。)parquet不支持增删改。
----------------------------------------------------------
因为业务要求,需要对Hive表进行delete,在官网查询后,发现update和delete是一类问题。在此总结下如何实现Hive表的delete和update。
首先,先看下官网关于update和delete的相关说明,使用注意事项也请参考官网说明,这里只介绍如何实现相关功能。
综合上述信息,Hive自0.14版本开始支持update和delete,要执行update和delete的表必须支持ACID,而关于ACID的详细介绍,需要查看Hive Transactions.
经过对Hive Transactions相关内容的分析,我提取出了以下必要信息:
综合上述信息,可以得出以下结论:
如果一个表要实现update和delete功能,该表就必须支持ACID,而支持ACID,就必须满足以下条件:
1、表的存储格式必须是ORC(STORED AS ORC);
2、表必须进行分桶(CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS);
3、Table property中参数transactional必须设定为True(tblproperties('transactional'='true'));
4、以下配置项必须被设定:
Client端:
-
hive.support.concurrency – true
-
hive.enforce.bucketing – true
-
hive.exec.dynamic.partition.mode – nonstrict
-
hive.txn.manager – org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
服务端:
-
hive.compactor.initiator.on – true
-
hive.compactor.worker.threads – 1
-
hive.txn.manager – org.apache.hadoop.hive.ql.lockmgr.DbTxnManager(经过测试,服务端也需要设定该配置项)
注意:上述配置项必须区分Client端和服务端。在Cloudera Manager上可以分别添加(hive—>配置—>高级),在更新部署配置信息的时候需要勾选部署客户端配置(默认是勾选的)。
https://blog.csdn.net/u010003835/article/details/88249027 《Hive_Hive ORC 实现 update 与 delete》
https://blog.csdn.net/u013332124/article/details/89644109《Hive ACID和事务表支持详解》
https://blog.csdn.net/lsr40/article/details/107975889《【数仓】数据存储格式的选择:Parquet与ORC》
https://blog.csdn.net/yu616568/article/details/50993491
以上是关于Hive orc与parquet的区别 orc如何支持事物的主要内容,如果未能解决你的问题,请参考以下文章
Parquet vs ORC vs ORC with Snappy