1.概述

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

  • 減少 NameNode 的負載

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

  • 文件中包含索引

  • 塊壓縮

  • ...

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

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

  這里筆者就不一一列舉了,更多詳情,可以閱讀官網(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 的流程,代碼如下所示:

網(wǎng)友評論