pyspark rdd有任何分页吗?

时间:2017-05-12 13:18:34

标签: apache-spark pagination pyspark rdd

我们有很多日志,我们希望通过一些处理获得有意义的数据。这些日志文件非常庞大,结果也很大。

我们已经构建了火花变换,在火花集群中完成了所需的工作。 在所有转换之后,我有一个巨大的数据,不能适应驱动程序内存。因此,执行rdd.collect()失败。

我们可以使用rdd中的任何分页类型的操作吗? 有点像SQL中的限制。" SELECT * FROM表LIMIT 15,10"

或任何建议如何处理这种情况?

2 个答案:

答案 0 :(得分:0)

在大多数文档和文章中,我看到人们在spark sql和RDD'中讨论了目前没有对偏移的支持。关于在Spark中支持OFFSET的一些讨论可以从旧的火花邮件链here中找到。它在分布式系统中确实有意义,偏移访问可能非常昂贵。如果是分页,我们感兴趣的是我们可以通过使用索引过滤RDD来实现它。可以使用zipWithIndex()或zipWithUniqueId()documentation动作获取索引。讨论herehere中给出了类似的答案。 SQL和Spark的等价物如下所示。

<强> SQL

select * from person limit 10, 10

<强>火花

result = rdd.zipWithIndex().filter(x => { x._2 >= 10 && x._2 < 20}).collect()

希望对有类似情况的人有用。

答案 1 :(得分:0)

有一种方法可以将日志文件同步到s3这样的数据湖,以将日志分解为特定长度,然后通过boto3分页,可以通过emr spark集群对它们进行分析