首页 > 解决方案 > 使用 spark-submit 为 Spark Job 设置 HBase 属性

问题描述

在 Hbase 数据迁移过程中,我遇到了一个java.lang.IllegalArgumentException: KeyValue size too large

长期来看:

我需要增加属性hbase.client.keyvalue.maxsize(从 1048576 到 10485760),/etc/hbase/conf/hbase-site.xml但我现在不能更改这个文件(我需要验证)。

在短期内 :

我已成功使用命令导入数据:

hbase org.apache.hadoop.hbase.mapreduce.Import \
  -Dhbase.client.keyvalue.maxsize=10485760 \
  myTable \
  myBackupFile

现在我需要使用 spark-submit 运行 Spark Job

什么是更好的方法:

spark-submit \
  --conf spark.hbase.client.keyvalue.maxsize=10485760
spark-submit \
  --conf spark.executor.extraJavaOptions=-Dhbase.client.keyvalue.maxsize=10485760 \
  --conf spark.driver.extraJavaOptions=-Dhbase.client.keyvalue.maxsize=10485760

标签: apache-sparkhadoophbase

解决方案


如果您可以更改您的代码,您应该能够以编程方式设置这些属性。我认为过去在 Java 中这样的事情曾经为我工作过:

Configuration conf = HBaseConfiguration.create();
conf.set("hbase.client.scanner.timeout.period", SCAN_TIMEOUT); // set BEFORE you create the connection object below:
Connection conn = ConnectionFactory.createConnection(conf);

推荐阅读