重要 | mr使用hcatalog讀寫hive表


640?wx_fmt=png

企業中,由於領導們的要求,hive中有數據存儲格式很多時候是會變的,比如為了優化將tsv,csv格式改為了parquet或者orcfile。那么這個時候假如是mr作業讀取hive的表數據的話,我們又要重新去寫mr並且重新部署。這個時候就很蛋疼。hcatalog幫我們解決了這個問題,有了它我們不用關心hive中數據的存儲格式。詳細信息請仔細閱讀本文。

640?wx_fmt=png

 

本文主要是講mapreduce使用HCatalog讀寫hive表。

hcatalog使得hive的元數據可以很好的被其它hadoop工具使用,比如pig,mr和hive。

HCatalog的表為用戶提供了(HDFS)中數據的關系視圖,並確保用戶不必擔心他們的數據存儲在何處或采用何種格式,因此用戶無需知道數據是否以RCFile格式存儲, 文本文件或sequence?文件。

它還提供通知服務,以便在倉庫中有新數據可用時通知工作流工具(如Oozie)。

HCatalog提供HCatInputFormat / HCatOutputFormat,使MapReduce用戶能夠在Hive的數據倉庫中讀/寫數據。 它允許用戶只讀取他們需要的表和列的分區。 托福備考返回的記錄格式是方便的列表格式,用戶無需解析它們。

下面我們舉個簡單的例子。

在mapper類中,我們獲取表schema並使用此schema信息來獲取所需的列及其值。

下面是map類。

 
        

 

在reduce類中,會為將要寫入hive表中的數據創建一個schema。

 
        

 

最后,創建driver類,並且表明輸入輸出schema和表信息。

 
        

 

當然,在跑上面寫的代碼之前,應該先在hive中創建輸出表。

 
        

可能會引起錯誤的地方是沒有設置$HIVE_HOME.

[完]

歡迎點擊閱讀原文掃二維碼加入浪尖知識星球,獲取更多優質的大數據學習資源和指導。

推薦閱讀:

Hive性能優化(全面)

Hive高級優化

640?wx_fmt=jpeg


文章來源:https://blog.csdn.net/rlnLo2pNEfx9c/article/details/81713969


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM