【发布时间】:2016-11-30 14:56:24
【问题描述】:
想象一下,我有一个格式如下的大日志文件:
Timestamp, text
Timestamp, text
Timestamp, text
Timestamp, text
Timestamp, text
Timestamp, text
日志文件已按时间戳排序。 如果我用 spark 作为数据帧读取文件,然后过滤 t1 和 t2 之间的时间戳, 然后他会检查每条记录的时间戳是否介于 t1 和 t2 之间,这需要很长时间。
但是,有没有一种方法可以告诉 spark df 已经订购,然后它会知道它只需要查找第一个和最后一个时间戳,并返回其间的所有行,这将是快很多?
【问题讨论】:
-
理想的解决方案是通过
Timestamp对输入文件进行分区,然后只读取您真正想要的文件。 Spark 支持谓词下推,因此如果您使用spark.read.parquet(myParquet.parq).filter(...),它只会为您读取相关文件。
标签: apache-spark pyspark binary-search