使用 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.' 为 HBase 属性添加前缀(我不确定是否可行以及是否有效)
spark-submit \
--conf spark.hbase.client.keyvalue.maxsize=10485760
- 使用 'spark.executor.extraJavaOptions' 和 'spark.driver.extraJavaOptions' 显式传输 HBase 属性
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);
我在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.' 为 HBase 属性添加前缀(我不确定是否可行以及是否有效)
spark-submit \
--conf spark.hbase.client.keyvalue.maxsize=10485760
- 使用 'spark.executor.extraJavaOptions' 和 'spark.driver.extraJavaOptions' 显式传输 HBase 属性
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);