Hbase KeyValue 大小太大

Hbase KeyValue size too large

我正在使用 Spark Streaming 下载网页并插入到 Hbase 中。我遇到以下异常:

WARN scheduler.TaskSetManager: Lost task 13.1 in stage 21.0 (TID 121,test1.server): java.lang.IllegalArgumentException: KeyValue size too large
    at org.apache.hadoop.hbase.client.HTable.validatePut(HTable.java:1378)
    at org.apache.hadoop.hbase.client.HTable.validatePut(HTable.java:1364)
    at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:974)
    at org.apache.hadoop.hbase.client.HTable.put(HTable.java:941)
    at org.apache.hadoop.hbase.mapreduce.TableOutputFormat$TableRecordWriter.write(TableOutputFormat.java:126)
    at org.apache.hadoop.hbase.mapreduce.TableOutputFormat$TableRecordWriter.write(TableOutputFormat.java:87)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun.apply(PairRDDFunctions.scala:1000)
    at org.apache.spark.rdd.PairRDDFunctions$$anonfun.apply(PairRDDFunctions.scala:979)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
    at org.apache.spark.scheduler.Task.run(Task.scala:64)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

我试过增加hbase.client.keyvalue.maxsize,设置hbase.client.keyvalue.maxsize=0表示没有限制。另外,我增加了hdfs.blocksize=256M。但是当我重启集群的时候,还是遇到一样的error:keyvalue to large。 请有任何想法,提前致谢!

hbase.client.keyvalue.maxsize 是客户端 属性。您需要在客户端节点上的 hbase-site.xml 中设置此 属性。或者您可以在配置对象的代码中设置此 属性。 不需要为 属性 重启 HBase。