【问题标题】:Huge insert to HBase大量插入到 HBase
【发布时间】:2016-06-22 12:36:48
【问题描述】:

我在尝试向 HBase 插入数据时遇到问题。

我有一个包含 2 个字段的 1200 万行 Spark DataFrame:

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

我需要将其存储在 HBase 表中,KEY 是行键,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_connexions 吗? 是否需要在 HBase 或 Spark 方面进行一些调整?

谢谢!

杰弗里

【问题讨论】:

    标签: scala hadoop apache-spark hbase hortonworks-data-platform


    【解决方案1】:

    我们终于更改了 HBase 连接器。

    使用 it.nerdammer.spark.hbase(通过 RDD),它可以完美运行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2011-09-04
      相关资源
      最近更新 更多