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