我试图为数据框中的大量字符串创建一个bloom过滤器 - 大约1.2亿。每个字符串平均为20-25个字符,总数据大小超过我们默认的maxResultSize
1GB。我不想更改BloomFilter.putString()
,因为我将来必须在输入数据的大小增加时再次更改它。
在Spark中有什么方法可以用小块从数据帧中流式传输数据,并通过调用Dataset.toLocalIterator()
来训练BloomFilter?我也尝试使用from urllib.request import urlopen
html = urlopen("http://www.google.com/")
content = html.read()
print(content)
但由于源数据集的性质,我不得不将它合并到100个大分区,使这100个分区中的每一个都太大而不适合驱动程序内存。
作为最后的手段,我考虑将数据收集到HDFS文件中并使用DFSInputStream读取它,但如果Spark中内置了某些内容,我想避免使用它。