我试图为Dataframe中的大量字符串创建一个bloom过滤器-~1.2亿。在平均每个字符串20-25个字符的情况下,总数据大小超过了我们的默认值 spark.driver.maxResultSize
1gb的。我不想改变现状 maxResultSize
因为当将来输入数据的大小增加时,我必须再次更改它。
在spark中有没有什么方法可以将Dataframe中的数据流化成小块,并通过调用 BloomFilter.putString()
? 我也试过用 Dataset.toLocalIterator()
但是由于源数据集的性质,我不得不将它合并到100个大分区中,使得这100个分区中的每个分区都太大,无法放入驱动程序内存。
作为最后的手段,我正在考虑将数据收集到hdfs文件中,并使用dfsinputstream读取它,但如果spark中内置了某些内容,我希望避免使用它。
1条答案
按热度按时间avwztpqn1#
Spark
DataFrameStatFunctions
提供bloomFilter
实施: