【发布时间】:2018-01-15 21:12:07
【问题描述】:
我在 Apache spark 中使用了 Breeze 实现的布隆过滤器。我的布隆过滤器预计有 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。
我的问题:
- 如何在不增加 buffer.max 值的情况下解决此异常以及如何处理?
- 是否可以使用驱动程序内存 6512mb 构建一个包含超过 20 亿位的布隆过滤器?
任何与此相关的想法或建议将不胜感激。提前致谢。
【问题讨论】:
标签: scala apache-spark bloom-filter bigdata