1.概述

  在存儲業(yè)務(wù)數(shù)據(jù)的時候,隨著業(yè)務(wù)的增長,Hive 表存儲在 HDFS 的上的數(shù)據(jù)會隨時間的增加而增加,而以 Text 文本格式存儲在 HDFS 上,所消耗的容量資源巨大。那么,我們需要有一種方式來減少容量的成本。而在 Hive 中,有一種 ORC 文件格式可以極大的減少存儲的容量成本。今天,筆者就為大家分享如何實(shí)現(xiàn)流式數(shù)據(jù)追加到 Hive ORC 表中。

2.內(nèi)容

2.1 ORC

  這里,我們首先需要知道 Hive 的 ORC 是什么。在此之前,Hive 中存在一種 RC 文件,而 ORC 的出現(xiàn),對 RC 這種文件做了許多優(yōu)化,這種文件格式可以提供一種高效的方式來存儲 Hive 數(shù)據(jù),使用 ORC 文件可以提供 Hive 的讀寫以及性能。其優(yōu)點(diǎn)如下:

  • 減少 NameNode 的負(fù)載

  • 支持復(fù)雜數(shù)據(jù)類型(如 list,map,struct 等等)

  • 文件中包含索引

  • 塊壓縮

  • ...

  結(jié)構(gòu)圖(來源于 Apache ORC 官網(wǎng))如下所示:

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

  這里筆者就不一一列舉了,更多詳情,可以閱讀官網(wǎng)介紹:[入口地址]

 2.2 使用

  知道了 ORC 文件的結(jié)構(gòu),以及相關(guān)作用,我們?nèi)绾稳ナ褂?ORC 表,下面我們以創(chuàng)建一個處理 Stream 記錄的表為例,其創(chuàng)建示例 SQL 如下所示:

create table alerts ( id int , msg string )
     partitioned by (continent string, country string)     clustered by (id) into 5 buckets
     stored as orc tblproperties("transactional"="true"); // currently ORC is required for streaming

  需要注意的是,在使用 Streaming 的時候,創(chuàng)建 ORC 表,需要使用分區(qū)分桶。

  下面,我們嘗試插入一下數(shù)據(jù),來模擬 Streaming 的流程,代碼如下所示:

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式