gpt4 book ai didi

scala - Spark 与 BloomFilter 的数十亿条记录导致 Kryo 序列化失败 : Buffer overflow.

转载 作者:行者123 更新时间:2023-12-04 21:06:06 36 4
gpt4 key购买 nike

我在 Apache spark 中使用了 Breeze 实现的 Bloom 过滤器。我的布隆过滤器需要 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 亿位的布隆过滤器?

  • 任何与此相关的想法或建议将不胜感激。提前致谢。

    最佳答案

    尝试指定 spark.kryoserializer.buffer.max1 gb (或对此属性进行实验,以便选择更好的值)在 spark-default.conf (或覆盖的属性)并重新启动您的 Spark 服务,它应该可以帮助您。

    关于scala - Spark 与 BloomFilter 的数十亿条记录导致 Kryo 序列化失败 : Buffer overflow.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45565945/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com