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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM