天天看點

《Hadoop實戰手冊》一1.9 使用Pig從HDFS導出資料到MongoDB

本節書摘來異步社群《hadoop實戰手冊》一書中的第1章,第1.9節,作者: 【美】jonathan r. owens , jon lentz , brian femiano 譯者: 傅傑 , 趙磊 , 盧學裕 責編: 楊海玲,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

mongodb是一種nosql資料庫,用于存儲和檢索海量資料。mongodb通常用于存儲面向使用者的資料,這些資料必須經過清洗、格式化之後才可以被使用。apache pig從某種程度上講就是用來處理這種任務的。mongostorage類使得使用pig可以非常友善地批量處理hdfs上的資料,再直接将這些資料導入mongodb中。本節将使用mongostorage類将hdfs上的資料導出到mongodb資料庫中。

準備工作

使用mongo hadoop擴充卡最簡單的方法是從github上克隆mongo-hadoop工程,并且将該工程編譯到一個特定的hadoop版本。克隆該工程需要安裝一個git用戶端。

本節假定你使用的hadoop版本是cdh3。

操作步驟

完成下面的步驟,将資料從hdfs複制到mongodb。

1.通過下面的指令實作克隆mongo-hadoop工程:

2.切換到穩定釋出的1.0分支版本:

3.必須保持mongo-hadoop與hadoop的版本一緻。使用文本編輯器打開mongo-hadoop克隆目錄下的build.sbt檔案,修改下面這行:

修改為:

4.編譯mongo-hadoop:

這将會在core/target檔案夾下生成一個名為mongo-hadoop-core_cdh3u3-1.0.0.jar的jar檔案。

6.複制mongo-hadoop-core、mongo-hadoop-pig和mongodb java驅動包到hadoop叢集每個節點的$hadoop_home/lib:

7.建立一個pig腳本讀取hdfs上的weblogs資料并将其存儲到mongodb資料庫:

工作原理

mongo hadoop擴充卡提供了一種新的相容hadoop的檔案系統實作,包括mongoinputformat和mongooutputformat。這些抽象實作使得通路mongodb和通路任何相容hadoop的檔案系統一樣。mongostorage将pig類型轉化為mongodb可以直接通路的basicdbobjectbuilder類型。