我在Apache spark中使用了Breeze实现了Bloom过滤器。我的Bloom Filter需要200,000,000个密钥。但是我面临以下异常:
User class threw exception: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 5.0 failed 4 times, most recent failure: Lost task 1.3 in stage 5.0 (TID 161, SVDG0752.ideaconnect.com): org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow. Available: 0, required: 1
我知道要避免这种情况我可以增加spark.kryoserializer.buffer.max值,但是由于群集资源限制,我无法将其增加超过2GB。
以下是代码:
val numOfBits=2147483647
val numOfHashFun=13
val bf = hierachyMatching.treeAggregate(new BloomFilter[String](numOfBits,numOfHashFun))(
_ += _, _ |= _)
其中hierachyMatching是包含200M记录的String类型的Rdd。
我的问题:
任何与此相关的想法或建议都将不胜感激。提前谢谢。
答案 0 :(得分:2)
尝试在spark.kryoserializer.buffer.max
(或覆盖属性)中指定1 gb
到spark-default.conf
(或尝试使用此属性以便选择更好的值)并重新启动您的Spark服务,它应该可以帮助您