最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Apache教程Hudi與Hive集成手冊(cè)

 更新時(shí)間:2022年03月30日 17:07:29   作者:leesf  
這篇文章主要介紹了Apache教程Hudi與Hive集成手冊(cè),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

1. Hudi表對(duì)應(yīng)的Hive外部表介紹

Hudi源表對(duì)應(yīng)一份HDFS數(shù)據(jù),可以通過Spark,F(xiàn)link 組件或者Hudi客戶端將Hudi表的數(shù)據(jù)映射為Hive外部表,基于該外部表, Hive可以方便的進(jìn)行實(shí)時(shí)視圖,讀優(yōu)化視圖以及增量視圖的查詢。

2. Hive對(duì)Hudi的集成

這里以Hive3.1.1、 Hudi 0.9.0為例, 其他版本類似

將hudi-hadoop-mr-bundle-0.9.0xxx.jar , hudi-hive-sync-bundle-0.9.0xx.jar 放到hiveserver 節(jié)點(diǎn)的lib目錄下

修改hive-site.xml找到hive.default.aux.jars.path 以及hive.aux.jars.path 這兩個(gè)配置項(xiàng),將第一步中的jar包全路徑給配置上去: 配置后如下

<name>hive.default.aux.jars.path</name>
<value>xxxx,jar,xxxx,jar,file:///mypath/hudi-hadoop-mr-bundle-0.9.0xxx.jar,file:///mypath/hudi-hive-sync-bundle-0.9.0xx.jar</value>

配置完后重啟hive-server

對(duì)于Hudi的bootstrap表(tez查詢),除了要添加hudi-hadoop-mr-bundle-0.9.0xxx.jar , hudi-hive-sync-bundle-0.9.0xx.jar這兩個(gè)jar包,還需把hbase-shaded-miscellaneous-xxx.jar, hbase-metric-api-xxx.jar,hbase-metrics-xxx.jar, hbase-protocol-shaded-xx.jar,hbase-shaded-protobuf-xxx.jar,htrce-core4-4.2.0xxxx.jar按上述步驟添加進(jìn)去。

3. 創(chuàng)建Hudi表對(duì)應(yīng)的hive外部表

一般來說Hudi表在用Spark或者Flink寫入數(shù)據(jù)時(shí)會(huì)自動(dòng)同步到Hive外部表, 此時(shí)可以直接通過beeline查詢同步的外部表, 若寫入引擎沒有開啟自動(dòng)同步,則需要手動(dòng)利用hudi客戶端工具run_hive_sync_tool.sh 進(jìn)行同步具體可以參考官網(wǎng)查看相關(guān)參數(shù)。

4. 查詢Hudi表對(duì)應(yīng)的Hive外部表

4.1 操作前提

使用Hive查詢Hudi表前,需要通過set命令設(shè)置hive.input.format,否則會(huì)出現(xiàn)數(shù)據(jù)重復(fù),查詢異常等錯(cuò)誤,如下面這個(gè)報(bào)錯(cuò)就是典型的沒有設(shè)置hive.input.format 導(dǎo)致的

java.lang.IllegalArgumentException: HoodieRealtimeReader can oly work on RealTimeSplit and not with xxxxxxxxxx

除此之外對(duì)于增量查詢,還需要set命令額外設(shè)置3個(gè)參數(shù)

set hoodie.mytableName.consume.mode=INCREMENTAL;
set hoodie.mytableName.consume.max.commits=3;
set hoodie.mytableName.consume.start.timestamp=commitTime;

注意這3個(gè)參數(shù)是表級(jí)別參數(shù)

參數(shù)名描述
hoodie.mytableName.consume.modeHudi表的查詢模式。 增量查詢 :INCREMENTAL非增量查詢:不設(shè)置或者設(shè)為SNAPSHOT
hoodie.mytableName.consume.start.timestampHudi表增量查詢起始時(shí)間
hoodie. mytableName.consume.max.commitsHudi表基于hoodie.mytableName.consume.start.timestamp 之后要查詢的增量commit次數(shù)。提交次數(shù),如設(shè)置為3時(shí),代表增量查詢從指定的起始時(shí)間之后commit 3次的數(shù)據(jù),設(shè)為-1時(shí),增量查詢從指定的起始時(shí)間之后提交的所有數(shù)據(jù)

4.2 COW類型Hudi表的查詢

例如Hudi原表表名為hudicow,同步給hive之后hive表名hudicow

4.2.1 COW表實(shí)時(shí)視圖查詢

設(shè)置hive.input.format 為org.apache.hadoop.hive.ql.io.HiveInputFormat或者org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormat后,像普通的hive表一樣查詢即可

set hive.input.format= org.apache.hadoop.hive.ql.io.HiveInputFormat;
select count(*) from hudicow;

4.2.2 COW表增量查詢

除了要設(shè)置hive.input.format,還需要設(shè)置上述的3個(gè)增量查詢參數(shù),且增量查詢語句中的必須添加where 關(guān)鍵字并將_hoodie_commit_time > 'startCommitTime'作為過濾條件(這地方主要是hudi的小文件合并會(huì)把新舊commit的數(shù)據(jù)合并成新數(shù)據(jù),hive是沒法直接從parquet文件知道哪些是新數(shù)據(jù)哪些是老數(shù)據(jù))

set hive.input.format = org.apache.hadoop.hive.ql.io.HiveInputFormat;
set hoodie.hudicow.consume.mode = INCREMENTAL;
set hoodie.hudicow.consume.max.commits = 3;
set hoodie.hudicow.consume.start.timestamp = xxxx;
select count(*) from hudicow where `_hoodie_commit_time` > 'xxxx'

注意_hoodie_commit_time 的引號(hào)是反引號(hào)(tab鍵上面那個(gè))不是單引號(hào), 'xxxx'是單引號(hào)

4.3 MOR類型Hudi表的查詢

例如mor類型Hudi源表的表名為hudimor,映射為兩張Hive外部表hudimor_ro(ro表)和hudimor_rt(rt表)

4.3.1 MOR表讀優(yōu)化視圖

實(shí)際上就是讀 ro表,和cow表類似設(shè)置完hiveInputFormat 之后 和普通的hive表一樣查詢即可。

4.3.2 MOR表實(shí)時(shí)視圖

設(shè)置了hive.input.format之后,即可查詢到Hudi源表的最新數(shù)據(jù)

set hive.input.format = org.apache.hadoop.hive.ql.io.HiveInputFormat;
select * from hudicow_rt;

4.3.3 MOR表增量查詢

這個(gè)增量查詢針對(duì)的rt表,不是ro表。通COW表的增量查詢類似

set hive.input.format = org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormat; // 這地方指定為HoodieCombineHiveInputFormat
set hoodie.hudimor.consume.mode = INCREMENTAL;set hoodie.hudimor.consume.max.commits = -1;
set hoodie.hudimor.consume.start.timestamp = xxxx;
select * from hudimor_rt where `_hoodie_commit_time` > 'xxxx'; // 這個(gè)表名要是rt表

說明如下

set hive.input.format=org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormat;

最好只用于rt表的增量查詢,當(dāng)然其他種類的查詢也可以設(shè)置為這個(gè),這個(gè)參數(shù)會(huì)影響到普通的hive表查詢,因此在rt表增量查詢完成后,應(yīng)該設(shè)置

set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;

或者改為默認(rèn)值

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

用于其他表的查詢。

set hoodie.mytableName.consume.mode=INCREMENTAL;

僅用于該表的增量查詢模式,若要對(duì)該表切換為其他查詢模式,應(yīng)設(shè)置

set hoodie.hudisourcetablename.consume.mode=SNAPSHOT;

當(dāng)前Hudi(0.9.0)對(duì)接Hive的一些問題,請(qǐng)使用master分支或即將發(fā)布的0.10.0版本

hive讀hudi表會(huì)將所有的數(shù)據(jù)給打印出來有嚴(yán)重的性能問題和數(shù)據(jù)安全問題。

MOR表的實(shí)時(shí)視圖讀取 請(qǐng)按需設(shè)置mapreduce.input.fileinputformat.split.maxsize的大小 禁止hive取切分讀取的文件,否則會(huì)出現(xiàn)數(shù)據(jù)重復(fù)。這個(gè)問題當(dāng)前是無解的,spark讀hudi實(shí)時(shí)視圖的時(shí)候代碼直接寫死不會(huì)切分文件,hive需要手動(dòng)設(shè)置。

如果碰到classNotFound, noSuchMethod等錯(cuò)誤請(qǐng)檢查hive lib庫下面的jar包是否出現(xiàn)沖突。

5. Hive側(cè)源碼修改

為支持Hive查詢Hudi的純log文件需要對(duì)Hive側(cè)源碼進(jìn)行修改。

具體修改org.apache.hadoop.hive.common.FileUtils 如下函數(shù)

public static final PathFilter HIDDEN_FILES_PATH_FILTER = new PathFilter() {? ? 
  @Override? ? 
  public boolean accept(Path p) {? ? ? 
    String name = p.getName();? ? ? 
    boolean isHudiMeta = name.startsWith(".hoodie");? ? ? 
    boolean isHudiLog = false;? ? ? 
    Pattern LOG_FILE_PATTERN = Pattern.compile("\\.(.*)_(.*)\\.(.*)\\.([0-9]*)(_(([0-9]*)-([0-9]*)-([0-9]*)))?");? ? ? 
    Matcher matcher = LOG_FILE_PATTERN.matcher(name);? ? ? 
    if (matcher.find()) {? ? ? ? 
      isHudiLog = true;? ? ? 
    }? ? ? 
    boolean isHudiFile = isHudiLog || isHudiMeta;? ? ? 
    return (!name.startsWith("_") && !name.startsWith(".")) || isHudiFile;? ? 
  }? 
};

重新編譯hive, 把新編譯的hive-common-xxx.jarhive-exec-xxx.jar 替換到hive server的lib目錄下注意權(quán)限和名字和原來的jar包保持一致。

最后重啟hive-server即可。

以上就是Apache教程Hudi與Hive集成手冊(cè) 的詳細(xì)內(nèi)容,更多關(guān)于Apache Hudi與Hive集成手冊(cè) 的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • GitLab?Pipeline規(guī)范及流程觸發(fā)詳解

    GitLab?Pipeline規(guī)范及流程觸發(fā)詳解

    這篇文章主要為大家介紹了GitLab?Pipeline規(guī)范及流程觸發(fā)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 詳解HTTP狀態(tài)碼

    詳解HTTP狀態(tài)碼

    這篇文章主要介紹了詳解HTTP狀態(tài)碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • dubbo的配置文件詳解(推薦)

    dubbo的配置文件詳解(推薦)

    這篇文章主要介紹了dubbo 配置文件詳解(推薦),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 高命中率的varnish緩存配置分享

    高命中率的varnish緩存配置分享

    這篇文章主要介紹了高命中率的varnish緩存配置分享,本文直接給出配置代碼,需要的朋友可以參考下
    2014-12-12
  • NAS(synology 群暉)首次使用教程

    NAS(synology 群暉)首次使用教程

    最近購買了群暉NAS企業(yè)2盤位網(wǎng)絡(luò)存儲(chǔ)云服務(wù)器DS716+,到手后發(fā)現(xiàn)教程也么有只有簡(jiǎn)單的硬盤安裝方法,經(jīng)過摸索終于知道大概怎么用的了,特分享一下方便需要的朋友
    2016-03-03
  • Kloxo面板無法登錄出現(xiàn)500錯(cuò)誤的解決方法

    Kloxo面板無法登錄出現(xiàn)500錯(cuò)誤的解決方法

    這篇文章主要介紹了Kloxo面板無法登錄出現(xiàn)500錯(cuò)誤的解決方法,需要的朋友可以參考下
    2015-10-10
  • 服務(wù)器做raid1問題集錦

    服務(wù)器做raid1問題集錦

    這篇文章主要是因?yàn)樽罱姆?wù)器為了安全性考慮了做了raid1,但怕硬盤出問題,特整理了這篇文章,并根據(jù)自己的經(jīng)驗(yàn)結(jié)合了下,希望能幫到需要的朋友
    2013-06-06
  • V?Rising?服務(wù)器搭建圖文教程

    V?Rising?服務(wù)器搭建圖文教程

    這篇文章主要介紹了V?Rising?服務(wù)器搭建,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 教你使用Ubuntu搭建DNS服務(wù)器

    教你使用Ubuntu搭建DNS服務(wù)器

    這篇文章主要介紹了Ubuntu搭建DNS服務(wù)器,本例是在ubuntu18.04上進(jìn)行的,其他版本的ubuntu同樣類似,重點(diǎn)講解了/etc/bind/named.conf.options配置文件,需要的朋友可以參考下
    2022-09-09
  • aws服務(wù)器更換實(shí)例規(guī)格后ssh無法登陸的解決方案

    aws服務(wù)器更換實(shí)例規(guī)格后ssh無法登陸的解決方案

    這篇文章主要介紹了aws服務(wù)器更換實(shí)例規(guī)格后ssh無法登陸,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

天津市| 秀山| 永宁县| 浦江县| 万盛区| 渭源县| 房产| 土默特左旗| 且末县| 湟源县| 西宁市| 汕头市| 葫芦岛市| 溧水县| 沛县| 基隆市| 甘谷县| 平利县| 绥宁县| 磐石市| 洪江市| 密山市| 扎囊县| 淮南市| 吴桥县| 楚雄市| 广德县| 西盟| 当阳市| 特克斯县| 谷城县| 临潭县| 肇源县| 石首市| 阿图什市| 沁阳市| 马公市| 长丰县| 湟源县| 曲周县| 宿州市|