2017-06-01 55 views
0

以下是我正在嘗試執行的操作:關於如何通過HFile將協議緩衝區文件批量加載到HBase的任何想法?

將數據從Hive加載到由協議緩衝區序列化的HBase中。

我試過多種方法:

  1. 直接創建連接到HBase的,做付諸HBase的。這工作,但顯然不是很有效。

  2. 我導入的JSON表出從配置單元在S3,並將它們存儲作爲TEXTFILES(由製表符分隔),然後使用importTsv實用程序來生成和HFILE批量加載它們變成HBase的,這也適用。

但現在我想在一個更有效的方式來實現這一目標:

出口我從S3蜂巢表中的數據,它們序列化到協議緩衝區對象,然後生成HFILE並直接安裝HFILE到HBase的。

我使用Spark作業從Hive中讀取,並且可以給我JavaRDD,然後我可以構建我的協議緩衝區對象,但是我不知道如何從那裏繼續。

所以我的問題:如何從協議緩衝區對象生成HFile。 我們不想將它們保存爲本地磁盤或HDFS上的文本文件,我如何從那裏直接生成HFile?

非常感謝!

+0

_「使用Spark job ... do放入HBase ...效率不高」_ >>您是否使用異步HBase接口,並且每個執行器使用一個「BufferedMutator」?參看https://hbase.apache.org/book.html#_basic_spark *(注意'HBaseContext'需要HBase 2.x https://issues.apache.org/jira/browse/HBASE-13992或CDH版本的HBase 1.x,因爲Apache的後端口尚未發佈https://issues.apache.org/jira/browse/HBASE-14160)* –

+1

谷歌有關'spark hfileoutputformat'的查詢指向幾個有趣的帖子,包括_「使用Spark高效批量加載HBase」_ http://www.opencore.com/blog/2016/10/efficient-bulk-load-of-hbase-using-spark/ –

回答

0

感謝@Samson指出那真棒的帖子。

經過試驗和錯誤,我得到的東西工作。 爲了節省他人的痛苦,這裏的工作example

它做什麼: 它使用Spark從S3讀取數據,將它們重新分區到相應的區域,生成HFile。