中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

沒有備案的網(wǎng)站百度能收錄品牌推廣方案策劃書

沒有備案的網(wǎng)站百度能收錄,品牌推廣方案策劃書,有什么類似凡科建站,江山網(wǎng)站設(shè)計目錄 一、前言 二、Hive事務(wù)背景知識 hive事務(wù)實現(xiàn)原理 hive事務(wù)原理之 —— delta文件夾命名格式 _orc_acid_version 說明 bucket_00000 合并器(Compactor) 二、Hive事務(wù)使用限制 參數(shù)設(shè)置 客戶端參數(shù)設(shè)置 客戶端參數(shù)設(shè)置 三、Hive事務(wù)使用操作演示 操作步驟 客…

目錄

一、前言

二、Hive事務(wù)背景知識

hive事務(wù)實現(xiàn)原理

hive事務(wù)原理之 —— delta文件夾命名格式

_orc_acid_version 說明

bucket_00000

合并器(Compactor)

二、Hive事務(wù)使用限制

參數(shù)設(shè)置

客戶端參數(shù)設(shè)置

客戶端參數(shù)設(shè)置

三、Hive事務(wù)使用操作演示

操作步驟

客戶端設(shè)置參數(shù)

創(chuàng)建一張事務(wù)表

插入幾條數(shù)據(jù)

刪除一條數(shù)據(jù)

針對事務(wù)表的增刪改查操作演示

創(chuàng)建事務(wù)表

插入一條數(shù)據(jù)

修改數(shù)據(jù)

刪除數(shù)據(jù)


一、前言

使用過mysql的同學對mysql的事務(wù)這個概念應該不陌生,當對mysql的表進行增刪改的時候,mysql會開啟一個事務(wù),以確保本次操作的數(shù)據(jù)的安全性,在hive3.0之后,hive也開始支持了事務(wù),以滿足一些增刪改的業(yè)務(wù)場景,接下來將對hive的事務(wù)操作做詳細的說明。

二、Hive事務(wù)背景知識

Hive設(shè)計之初時,是不支持事務(wù)的,原因:

  • Hive的核心目標是將已經(jīng)存在的結(jié)構(gòu)化數(shù)據(jù)文件映射成為表,然后提供基于表的SQL分析處理,是一款面向歷史、面向分析的工具;
  • Hive作為數(shù)據(jù)倉庫,是分析數(shù)據(jù)規(guī)律的,而不是創(chuàng)造數(shù)據(jù)規(guī)律的;
  • Hive中表的數(shù)據(jù)存儲于HDFS上,而HDFS是不支持隨機修改文件數(shù)據(jù)的,其常見的模型是一次寫入,多次讀取;

從Hive0.14版本開始,具有ACID語義的事務(wù)(支持INSERT,UPDATE和DELETE)已添加到Hive中,以解決以下場景下遇到的問題:

1)流式傳輸數(shù)據(jù)

使用如Apache Flume或Apache Kafka之類的工具將數(shù)據(jù)流式傳輸?shù)浆F(xiàn)有分區(qū)中,可能會有臟讀(開始查詢后能看到寫入的數(shù)據(jù))

2)變化緩慢數(shù)據(jù)更新

星型模式數(shù)據(jù)倉庫中,維度表隨時間緩慢變化。例如,零售商將開設(shè)新商店,需要將其添加到商店表中,或者現(xiàn)有商店可能會更改其平方英尺或某些其他跟蹤的特征。這些更改需要插入單個記錄或更新記錄(取決于所選策略)

3)數(shù)據(jù)修正

有時發(fā)現(xiàn)收集的數(shù)據(jù)不正確,需要局部更正

hive事務(wù)實現(xiàn)原理

Hive的文件是存儲在HDFS上的,而HDFS上又不支持對文件的任意修改,只能是采取另外的手段來完成。具體來說:

  • 用HDFS文件作為原始數(shù)據(jù)(基礎(chǔ)數(shù)據(jù)),用delta保存事務(wù)操作的記錄增量數(shù)據(jù);
  • 正在執(zhí)行中的事務(wù),是以一個staging開頭的文件夾維護的,執(zhí)行結(jié)束就是delta文件夾。每次執(zhí)行一次事務(wù)操作都會有這樣的一個delta增量文件夾;
  • 當訪問Hive數(shù)據(jù)時,根據(jù)HDFS原始文件和delta增量文件做合并,查詢最新的數(shù)據(jù);

對于insert,update,delete三種操作來說,

1、INSERT語句會直接創(chuàng)建delta目錄;

2、DELETE目錄的前綴是delete_delta;

3、UPDATE語句采用了split-update特性,即先刪除、后插入;

hive事務(wù)原理之 —— delta文件夾命名格式

通過上面的描述,大概了解到hive的事務(wù)在執(zhí)行過程中,delta目錄文件很重要,具體來說,一個delta文件的完整名稱,可以拆開來看,各個部分的含義需要分別去理解,比如當我們執(zhí)行一條delete語句開啟一個事務(wù)時,將會出現(xiàn)類似下面第一條格式的文件;

?對于這個文件來說,其完整的含義,可以類比為:delta_minWID_maxWID_stmtID,拆開來看即:

1、即delta前綴、寫事務(wù)的ID范圍、以及語句ID;刪除時前綴是delete_delta,里面包含了要刪除的文件;

2、Hive會為寫事務(wù)(INSERT、DELETE等)創(chuàng)建一個寫事務(wù)ID(Write ID),該ID在表范圍內(nèi)唯一;

3、語句ID(Statement ID)則是當一個事務(wù)中有多條寫入語句時使用的,用作唯一標識;

而每個事務(wù)的delta文件夾下,都存在兩個文件

_orc_acid_version 說明

?_orc_acid_version的內(nèi)容是2,即當前ACID版本號是2。和版本1的主要區(qū)別是UPDATE語句采用了split-update特性,即先刪除、后插入。這個文件不是ORC文件,可以下載下來直接查看。

bucket_00000

bucket_00000文件則是寫入的數(shù)據(jù)內(nèi)容。如果事務(wù)表沒有分區(qū)和分桶,就只有一個這樣的文件。文件都以O(shè)RC格式存儲,底層二級制,需要使用ORC TOOLS查看,詳見附件資料;

可以通過引入相關(guān)的依賴包進行查看

?對于其中的內(nèi)容做一下補充說明:

  • operation:0 表示插入,1 表示更新,2 表示刪除。由于使用了split-update,UPDATE是不會出現(xiàn)的,所以delta文件中的operation是0 , delete_delta 文件中的operation是2;
  • originalTransaction、currentTransaction:該條記錄的原始寫事務(wù)ID,當前的寫事務(wù)ID;
  • rowId:一個自增的唯一ID,在寫事務(wù)和分桶的組合中唯一;
  • row:具體數(shù)據(jù),對于DELETE語句,則為null,對于INSERT就是插入的數(shù)據(jù),對于UPDATE就是更新后的數(shù)據(jù);

合并器(Compactor)

隨著表的修改操作,創(chuàng)建了越來越多的delta增量文件,就需要合并以保持足夠的性能,合并器Compactor是一套在Hive Metastore內(nèi)運行,支持ACID系統(tǒng)的后臺進程。所有合并都是在后臺完成的,不會阻止數(shù)據(jù)的并發(fā)讀、寫。合并后,系統(tǒng)將等待所有舊文件的讀操作完成后,刪除舊文件。

合并操作分為兩種

  • minor compaction(小合并),小合并會將一組delta增量文件重寫為單個增量文件,默認觸發(fā)條件為10個delta文件;
  • major compaction(大合并),大合并將一個或多個增量文件和基礎(chǔ)文件重寫為新的基礎(chǔ)文件,默認觸發(fā)條件為delta文件相應于基礎(chǔ)文件占比10%;

二、Hive事務(wù)使用限制

然Hive支持了具有ACID語義的事務(wù),但是在使用起來,并沒有像在MySQL中使用那樣方便,有很多限制,歸納如下:

  • 尚不支持BEGIN,COMMIT和ROLLBACK,所有語言操作都是自動提交的;
  • 表文件存儲格式僅支持ORC(STORED AS ORC);
  • 需要配置參數(shù)開啟事務(wù)使用;
  • 外部表無法創(chuàng)建為事務(wù)表,因為Hive只能控制元數(shù)據(jù),無法管理數(shù)據(jù);
  • 表屬性參數(shù)transactional必須設(shè)置為true;
  • 必須將Hive事務(wù)管理器設(shè)置為org.apache.hadoop.hive.ql.lockmgr.DbTxnManager才能使用ACID表;
  • 事務(wù)表不支持LOAD DATA ...語句;

參數(shù)設(shè)置

在使用hive的事務(wù)表時,需要對部分參數(shù)做設(shè)置之后才能生效,參數(shù)的設(shè)置可以在客戶端,也可以在服務(wù)端,兩者任選其一;

客戶端參數(shù)設(shè)置

# 可以使用set設(shè)置當前session生效 也可以配置在hive-site.xml中)
set hive.support.concurrency = true; --Hive是否支持并發(fā)
set hive.enforce.bucketing = true; --從Hive2.0開始不再需要  是否開啟分桶功能
set hive.exec.dynamic.partition.mode = nonstrict; --動態(tài)分區(qū)模式  非嚴格
set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; --事務(wù)管理器

客戶端參數(shù)設(shè)置

set hive.compactor.initiator.on = true; --是否在Metastore實例上運行啟動壓縮合并
set hive.compactor.worker.threads = 1; --在此metastore實例上運行多少個合并程序工作線程

三、Hive事務(wù)使用操作演示

接下來通過實際操作演示下hive事務(wù)表的使用

操作步驟

客戶端設(shè)置參數(shù)

打開一個客戶端窗口后,執(zhí)行下面的事務(wù)設(shè)置參數(shù)

set hive.support.concurrency = true; --Hive是否支持并發(fā)
set hive.enforce.bucketing = true; --從Hive2.0開始不再需要  是否開啟分桶功能
set hive.exec.dynamic.partition.mode = nonstrict; --動態(tài)分區(qū)模式  非嚴格
set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; --
set hive.compactor.initiator.on = true; --是否在Metastore實例上運行啟動壓縮合并
set hive.compactor.worker.threads = 1; --在此metastore實例上運行多少個壓縮程序工作線程。

創(chuàng)建一張事務(wù)表

CREATE TABLE emp (id int, name string, salary int)
STORED AS ORC TBLPROPERTIES ('transactional' = 'true');

?

插入幾條數(shù)據(jù)

INSERT INTO emp VALUES (1, 'Jerry', 5000);

INSERT INTO emp VALUES (2, 'Tom', 8000);

INSERT INTO emp VALUES (3, 'Kate', 6000);

執(zhí)行過程可以看到走了M-R任務(wù)

?同時執(zhí)行過程中,觀察hdfs目錄文件,可以看到產(chǎn)生了下面的staging文件

?

而執(zhí)行完成后,正好產(chǎn)生了一個_orc_acid_version文件,以及bucket_00000文件;

?如果執(zhí)行多條數(shù)據(jù)的插入,就會產(chǎn)生多少個下面的文件目錄;

?查詢數(shù)據(jù),可以看到已經(jīng)完成數(shù)據(jù)的插入;

刪除一條數(shù)據(jù)

delete from emp where id =2;

執(zhí)行刪除之后,再次查看hdfs文件目錄,可以看到這里多了一個delete_delta文件,關(guān)于這個文件上面我們有詳細的說明;

針對事務(wù)表的增刪改查操作演示

創(chuàng)建事務(wù)表

create table trans_student(id int,name String,age int
)stored as orc TBLPROPERTIES('transactional'='true');

可以通過describe命令查看表的詳細信息

describe formatted trans_student;

插入一條數(shù)據(jù)

insert into trans_student (id, name, age) values (1,"allen",18);

?插入完成后,hdfs文件目錄就生成了相關(guān)的事務(wù)文件

修改數(shù)據(jù)

update trans_student
set age = 20
where id = 1;

執(zhí)行完成后,檢查hdfs目錄就多了一個delete_delta文件;

刪除數(shù)據(jù)

delete from trans_student where id =1;

執(zhí)行完成后,檢查hdfs目錄又多了一個delete_delta文件;

http://www.risenshineclean.com/news/29521.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)代理推廣徽信xiala5效果好軟文世界官網(wǎng)
  • 鎮(zhèn)江論壇網(wǎng)站建設(shè)網(wǎng)站建設(shè)介紹ppt
  • 網(wǎng)站免費做app神馬移動排名優(yōu)化
  • 四川網(wǎng)站建設(shè)套餐友情鏈接交易網(wǎng)
  • 網(wǎng)頁設(shè)計圖片簡單seo網(wǎng)站推廣排名
  • 深圳鼎晟展覽設(shè)計有限公司廣州王牌seo
  • 中國網(wǎng)頁設(shè)計師網(wǎng)站代運營靠譜嗎
  • 銷售員做網(wǎng)站常德網(wǎng)站seo
  • 速賣通網(wǎng)站怎么做推廣seo具體優(yōu)化流程
  • 定制網(wǎng)站建設(shè)公司怎么在百度上發(fā)布廣告
  • 做網(wǎng)站造假國內(nèi)免費推廣產(chǎn)品的網(wǎng)站
  • 和網(wǎng)站建設(shè)簽合同2020 惠州seo服務(wù)
  • 360網(wǎng)站賣東西怎么做搜索引擎優(yōu)化seo培訓
  • 做企業(yè)網(wǎng)站必須要座機嗎聯(lián)盟營銷平臺
  • 跨境電商獨立站運營百度一下的網(wǎng)址
  • 深圳制作網(wǎng)站培訓學校陜西seo快速排名
  • 網(wǎng)站開發(fā)網(wǎng)站設(shè)計案例免費推廣工具有哪些
  • 網(wǎng)站用哪些系統(tǒng)做的比較好用如何網(wǎng)站推廣
  • 事件營銷方案模板寧波seo外包公司
  • 網(wǎng)站建設(shè)新趨勢國內(nèi)新聞大事
  • 樹形菜單的網(wǎng)站代碼網(wǎng)絡(luò)運營推廣具體做什么工作
  • 做門戶類網(wǎng)站報價上海疫情又要爆發(fā)了
  • 網(wǎng)站服務(wù)器租用有什么好學大教育一對一收費價格表
  • 郴州企業(yè)網(wǎng)站建設(shè)制作營銷案例100例
  • 網(wǎng)站建站建設(shè)網(wǎng)站中國企業(yè)500強排行榜
  • a0000網(wǎng)站建設(shè)2022年seo最新優(yōu)化策略
  • 博山網(wǎng)站建設(shè)網(wǎng)頁制作基礎(chǔ)教程
  • 四川城鄉(xiāng)住房建設(shè)廳官方網(wǎng)站seo搜索優(yōu)化公司排名
  • 新華社官網(wǎng)百度推廣怎么優(yōu)化
  • 深圳平湖網(wǎng)站建設(shè)有免費推廣平臺