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

时间:2017-08-11 18:38:31

标签: hadoop apache-spark spark-dataframe bloom-filter

我试图为数据框中的大量字符串创建一个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中内置了某些内容,我想避免使用它。

0 个答案:

没有答案