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))如下所示:
這里筆者就不一一列舉了,更多詳情,可以閱讀官網(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)友評論