hbase的巨大插入

fcipmucu  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(2585)

我在尝试向hbase插入数据时遇到问题。
我有一个1200万行的sparkDataframe,有两个字段:


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

我需要将它存储在一个hbase表中,key是rowkey,match是一列。
我创建了带有行键拆分的表:

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个任务,任务数始终相同。
我做了一个改变:

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

使用limit(int.maxvalue),插入1200万行需要4/5分钟。
有人能解释一下这种行为吗?hbase侧是否有max\ U连接?在hbase或spark端有一些调整要做吗?
谢谢!
杰弗里

mqkwyuun

mqkwyuun1#

我们终于更换了hbase连接器。
有了it.nerdammer.spark.hbase(通过rdd),它可以完美地工作。

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

相关问题