存儲處理程序和NoSql

存儲處理程序是一個結合InputFormat、OutputFormat、SerDe和Hive需要使用的特定的代碼,來將外部實體作爲標準的Hive表進行處理的整體。

Storage Handler Background
Hadoop中有一個名爲InputFormat的抽象接口類,其可以將來自不同源的數據格式化成可以作爲job輸入的格式。如TextInputFormat。
Hadoop同時還提供了一個名爲OutputFormat的抽象接口類,其會獲取到一個job的輸出,然後將這個輸出輸入到一個實體中。如TextOutputFormat。
在Hadoop中輸入和輸出是物理文件的情況很正常。不過InputFormat和OutputFormat抽象接口可被用於從其他數據源(包括關係型數據庫、NoSQL存儲或Hbase,以及其他任何可通過InputFormat和OutputFormat進行設計實現的存儲)中讀取和存放數據。

HiveStorageHandler
該類是Hive用於連接如Hbase、Cassandra等類似的NoSQL存儲的主要接口。檢車下接口可以發現需要定義一個定製的InputFormat和一個OutputFormat以及SerDe。存儲處理程序負責從底層存儲子系統中讀取或寫入數據。

Hive與Hbase整合

對於一些指定Hive查詢,不需要掃描整個HBase表,通過過濾下推裁剪將會得到返回給Hive的行數據。
可以進行一個謂詞下推如:key>20、key<=20或者key<20,且key>=10
默認情況下,下推優化是開啓的,不過可以通過如下命令將其關閉:
set hive.optimize.ppd.storage = false ;

下面是一些Hive和HBase列映射需要注意的問題
沒有訪問HBase行時間戳的方式,只會返回最新版本的行;
HBase的鍵必須進行顯示定義。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章