使用 spark-submit 为 Spark 作业设置 HBase 属性

set HBase properties for Spark Job using spark-submit

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

长期来看:

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

短期内:

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

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

现在我需要使用 spark-submit运行 一个 Spark 作业

什么是更好的方法:

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

如果您可以更改代码,则应该能够以编程方式设置这些属性。我认为这样的事情过去曾在 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);