zoukankan      html  css  js  c++  java
  • hive 支持更新

    因为业务要求,需要对Hive表进行delete,在官网查询后,发现update和delete是一类问题。在此总结下如何实现Hive表的delete和update。

    首先,先看下官网关于updatedelete的相关说明,使用注意事项也请参考官网说明,这里只介绍如何实现相关功能。

    综合上述信息,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—>配置—>高级),在更新部署配置信息的时候需要勾选部署客户端配置(默认是勾选的)。

    --------------------- 本文来自 狂奔吧蜗牛 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xueyao0201/article/details/79387647?utm_source=copy 

  • 相关阅读:
    论企业家的修养七“善”(转)
    2009中国企业家新春联谊会
    独步红尘
    诗人的悲哀
    我们恋爱吧
    为妈妈祈福
    向总统学习形像包装!【强烈推荐】
    为了你,我开始学着写诗
    亲爱的,我们去私奔吧
    要做最好的自己:“优化”大脑的22条有效方法
  • 原文地址:https://www.cnblogs.com/chengjunhao/p/9759452.html
Copyright © 2011-2022 走看看