gpt4 book ai didi

hadoop - 使用大型数据集在 Spark 上训练 BloomFilter

转载 作者:可可西里 更新时间:2023-11-01 16:24:36 27 4
gpt4 key购买 nike

我正在尝试为数据帧中的大量字符串创建布隆过滤器 - 约 1.2 亿。每个字符串平均有 20-25 个字符,总数据大小超过我们默认的 spark.driver.maxResultSize 1GB。我不想更改 maxResultSize,因为将来输入数据的大小增加时我将不得不再次更改它。

在 Spark 中,我是否可以通过调用 BloomFilter.putString() 以小块流式传输数据帧中的数据并训练 BloomFilter?我也尝试过使用 Dataset.toLocalIterator() 但由于源数据集的性质,我不得不将它合并为 100 个大分区,使得这 100 个分区中的每一个都太大而无法容纳在驱动程序内存中。

作为最后的手段,我正在考虑将数据收集到一个 HDFS 文件中并使用 DFSInputStream 读取它,但如果 Spark 中内置了一些东西,我想避免它。

最佳答案

Spark DataFrameStatFunctions提供bloomFilter实现:

val df = Seq(1, 3, 7, 21).toDF("id")
val bf = df.stat.bloomFilter("id", expectedNumItems=1000, fpp=0.001)
scala> bf.mightContain(1)
res1: Boolean = true

scala> bf.mightContain(4)
res2: Boolean = false

关于hadoop - 使用大型数据集在 Spark 上训练 BloomFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641835/

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