1

HBaseにデータを挿入しようとすると問題が発生します。HBaseへの巨大な挿入

I 12万行を持つ2つのフィールドでのデータフレームをスパーク:私はHBaseのテーブルに保存する必要がある

* KEY, a md5 hash 
* MATCH, a boolean ("1" or "0") 

、KEYはのrowKeyあるとMATCH列です。

私はのrowKeyに分割してテーブルを作成:

create 'GTH_TEST', 'GTH_TEST', {SPLITS=> ['10000000000000000000000000000000', 
'20000000000000000000000000000000','30000000000000000000000000000000', 
'40000000000000000000000000000000','50000000000000000000000000000000', 
'60000000000000000000000000000000','70000000000000000000000000000000', 
'80000000000000000000000000000000','90000000000000000000000000000000', 
'a0000000000000000000000000000000','b0000000000000000000000000000000', 
'c0000000000000000000000000000000','d0000000000000000000000000000000', 
'e0000000000000000000000000000000','f0000000000000000000000000000000']} 

私はこのようなHortonworksからのHBase SHCコネクタを使用します。

df.write 
    .options(Map(HBaseTableCatalog.tableCatalog -> cat_matrice)) 
    .format("org.apache.spark.sql.execution.datasources.hbase") 
    .save() 

このコードは決して終わりません。それはHBaseへのデータの挿入を開始し、永遠に(私がそれを殺す前に少なくとも35時間)実行されます。 11984/16000のタスクを実行し、常に同じ数のタスクを実行します。

私は単一の変更作ら:リミット(Int.MaxValue)

df.limit(Int.MaxValue) 
    .write 
    .options(Map(HBaseTableCatalog.tableCatalog -> cat_matrice)) 
    .format("org.apache.spark.sql.execution.datasources.hbase") 
    .save() 

を、それを12万行を挿入するために4/5分かかります。

誰かがこの動作を説明できますか? HBase側にmax_connexionsはありますか? HBaseまたはSpark側で行うチューニングはありますか?

ありがとうございます!

Geoffrey

答えて

0

最終的にHBaseコネクタを変更しました。

it.nerdammer.spark.hbase(RDD経由)では、完全に動作します。

import it.nerdammer.spark.hbase._ 
rdd.toHBaseTable(tableName) 
    .toColumns("MATCHED") 
    .inColumnFamily(cfName) 
    .save()