1. 程式人生 > >hive如何配置支援事務及insert、update、delete

hive如何配置支援事務及insert、update、delete

轉載自:http://www.aboutyun.com/forum.php?mod=viewthread&tid=21274&extra=page%3D1

Hive從0.14版本開始支援事務和行級更新,但預設是不支援的,需要一些附加的配置。要想支援行級insert、update、delete,需要配置Hive支援事務。


一、Hive具有ACID語義事務的使用場景
1. 流式接收資料。
許多使用者使用諸如Apache Flume、Apache Storm或Apache Kafka這樣的工具將流資料灌入Hadoop叢集。當這些工具以每秒數百行的頻率寫入時,Hive也許只能每15分鐘到1小時新增一個分割槽,因為過於頻繁地新增分割槽很快就會使一個表中的分割槽數量難以維護。而且這些工具還可能向已存在的分割槽中寫資料,但是這樣將會產生髒讀(可能讀到查詢開始時間點以後寫入的資料),還在這些分割槽的所在目錄中遺留大量小檔案,進而給NameNode造成壓力。在這個使用場景下,事務支援可以獲得資料的一致性檢視同時避免產生過多的檔案。


2. 緩慢變化維。
在一個典型的星型模式資料倉庫中,維度表隨時間的變化很緩慢。例如,一個零售商開了一家新商店,需要將新店資料加到商店表,或者一個已有商店的營業面積或其它需要跟蹤的特性改變了。這些改變會導致插入或修改個別記錄。從0.14版本開始,Hive支援行級更新。

3. 資料重述。
有時發現數據集合有錯誤並需要更正。或者當前資料只是個近似值(如只有全部資料的90%,得到全部資料會滯後)。或者業務業務規則可能需要根據後續事務重述特定事務(打個比方,一個客戶購買了一些商品後又購買了一個會員資格,此時可以享受折扣價格,包括先前購買的商品)。或者一個客戶可能按照合同在終止了合作關係後要求刪除他們的客戶資料。從Hive 0.14開始,這些使用場景可以通過INSERT、UPDATE和DELETE支援。


二、配置Hive支援事務(Hive 2.0版)
1. 在hive-site.xml檔案中新增如下配置項

[XML] 純文字檢視 複製程式碼 ?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 <property> <name>hive.support.concurrency</name> <value>true</
value> </property> <property> <name>hive.exec.dynamic.partition.mode</name> <value>nonstrict</value> </property> <property> <name>hive.txn.manager</name> <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value> </property> <property> <name>hive.compactor.initiator.on</name> <value>true</value>

相關推薦

hive如何配置支援事務insertupdatedelete

轉載自:http://www.aboutyun.com/forum.php?mod=viewthread&tid=21274&extra=page%3D1 Hive從0.14版本開始支援事務和行級更新,但預設是不支援的,需要一些附加的配置。要想支援行

Hive支援行級insertupdatedelete

Hive從0.14版本開始支援事務和行級更新,但預設是不支援的,需要一些附加的配置。要想支援行級insert、update、delete,需要配置Hive支援事務。一、Hive具有ACID語義事務的使用場景 1. 流式接收資料。 許多使用者使用諸如Apache Flume、

SQL Server--OUTPUTOUTPUT...INTO... 在 INSERTUPDATEDELETE的用法

在INSERT、UPDATE、DELETE語句中使用OUTPUT得到語句影響的每行資訊,今天我們來學習這個語法。 1、OUTPUT_CLAUSE定義(語法參Transact-SQL 語法約定): <OUTPUT_CLAUSE> ::= {     [ OUTPU

對分布式事務兩階段提交三階段提交的理解

似的 zookeeper ole 持久性 完全 rep 反饋 對數 服務器 轉載至:http://www.cnblogs.com/binyue/p/3678390.html,最近學習需要,先轉載方便用用來強化加深印象 一、分布式數據一致性 在分布式系統中,為了保證數據的

分享知識-快樂自己:Hibernate 中 get() 和 load()savaupdatesavaOrUpdatemerge,不同之處執行原理?

1):Hibernate 中 get()  和 load() 有什麼不同之處? 1)Hibernate的 get方法,會確認一下該id對應的資料是否存在,首先在session快取中查詢,然後在快取中查詢,還沒有就查詢資料庫,資料庫中沒有就返回null。 2)Hibernate的 load方法載入

MyBatis:@Insert@Delete@Update@Select的value輸入SQL陣列時如何處理

當使用MyBatis的@Insert、@Delete、@Update、@Select時,我發現它們的value屬性都是陣列,例如: @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) pu

mabits批量insertupdateselect

一、批量查詢 ①單條件批量查詢 dao 層 public List<String>bindingDriver_update_select(List<BindingDriver> list); xml檔案 <select id="bindingDriv

MongoDB入門系列(二):InsertUpdateDeleteDrop

概述   本章節介紹Insert、Update、Delete、Drop操作基本語法。 環境: Version:3.4 insert insert()基本語法如下: db.collection.insert( <document or array of documents&

針對MYSQL deleteupdateinsert語句誤操作時的恢復辦法

mysql 針對MYSQL delete、update、insert語句誤操作(如update忘記加where條件) 目前還沒有特別好的辦法進行恢復,主要是根據binlog日誌檔案進行恢復,網上也有 很多的部落格說明這些操作步驟,目前總結起來快速方便的辦法是: 利用淘寶的彭

Elasticsearch不支援事務應用場景

1、問題 源自星球同學的提問:es如何與hive或mysql結合使用?es不支援事務有什麼好的彌補方案嗎? 2、事務的核心概念 如果一個數據庫聲稱支援事務的操作,那麼該資料庫必須要具備以下ACID四個特性:     原子性(Atomicity)  

教你如何調整Mysql中insertupdatedelete的順序來以提高效率

MySQL還允許改變語句排程的優先順序,它可以使來自多個客戶端的查詢更好地協作,這樣單個客戶端就不會由於鎖定而等待很長時間。改變優先順序還可以確保特定型別的查詢被處理得更快。我們首先應該確定應用的型別,判斷應用是以查詢為主還是以更新為主的,是確保查詢效率還是確保更新的效率,

python sqlite3 連線到資料庫,建立表,INSERT SELECTUPDATE DELETE等簡單操作

Python sqlite3 模組它提供了一個SQL介面相容。不需要單獨安裝這個模組,因為它預設情況下隨著Python版本在2.5.x 一起安裝。 要使用sqlite3模組,必須首先建立一個連線物件,表示資料庫中,然後可以選擇建立遊標物件,這將幫助在執行的所有

hive0.14-insertupdatedelete操作測試

問題導讀1.測試insert報錯,該如何解決? 2.hive delete和update報錯,該如何解決? 3.什麼情況下才允許delete和update? 首先用最普通的建表語句建一個表: hive>create table test(id int,name st

EntityFramework Core 1.1 AddAttachUpdateRemove方法如何高效使用詳解

上下文 數據庫 客戶端 接口 如何 EntityFramework Core 1.1方法理論詳解當我們利用EF Core查詢數據庫時如果我們不顯式關閉變更追蹤的話,此時實體是被追蹤的,關於變更追蹤我們下節再敘。就像我們之前在EF 6.x中討論的那樣,不建議手動關閉變更追蹤,對於有些特殊情況

SQL Server下ADO.NET 怎麽獲取數據庫SQL語句INSERTUPDATEDELETE了多少行數據

查詢 行數據 cit per 數據庫連接 into div conn 影響 ADO.NET 在發送SQL語句到SQL Server數據庫後,怎麽知道真正INSERT,UPDATE,DELETE了多少行數據呢? 使用SQL Server內置的全局變量@@ROWCOUNT即可

Android 學習筆記 Contacts ContentResolver queryaddupdatedelete 引數詳解

1.獲取聯絡人姓名 一個簡單的例子,這個函式獲取裝置上所有的聯絡人ID和聯絡人NAME。 public void fetchAllContacts() { ContentResolver contentResolver = this.getCon

hive的基本簡介安裝配置使用(一)

hive是什麼? 由facebook開源,用於解決海量結構化日誌的資料統計; 基於hadoop的一個數據倉庫工具,使用HDFS進行儲存並將結構化資料檔案對映成一張表,並提供類sql查詢的功能,其底層採用MR進行計算; 本質是將HQL

@ManyToMany(多對多資料對映的insertupdatedelete)

對hibernete只知道皮毛的偶,一直覺得在多表聯合查詢時配置hibernate資料表的對映檔案很是麻煩的問題,最近難得有時間學習java annotation所以順便更進一步的去學習一下hibernate,雖然我現在寫這些東西在有好多人覺得是否開始有些過時,但是作為小鳥

hive 支援行級updatedelete操作許可權

1. 找到對應的hive-site.xml檔案,加上以下配置: <property>    <name>hive.support.concurrency</name>    <value>true</value>&l

JPA在進行updatemodify和insert操作時不加事務,會報錯

javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current