是否可以使用二进制搜索优化pyspark SQL查询?

时间:2019-02-25 11:41:46

标签: python pyspark query-optimization pyspark-sql

我想知道如何在基于Timestamp列(但也可能基于双列)的非常频繁的pyspark数据帧查询中利用二进制搜索。

例如在熊猫中,如果我们使用排序的DatetimeIndex,则以下查询(通过索引)将使用二进制搜索,因此其时间复杂度是对数的。

df = df.set_index('DateTime').sort_index()
result = df.loc[start_date : end_date]

在pyspark中,我正在使用此查询来获得相同的结果:

start = start.strftime('%Y-%m-%d %H:%M:%S')
end = end.strftime('%Y-%m-%d %H:%M:%S')

df.createOrReplaceTempView('DataFrame')

result = spark.sql("""SELECT * FROM DataFrame 
                     WHERE (DateTime >= '{}') AND (DateTime < '{}')
                     ORDER BY DateTime""".format(start, end)).toPandas()

此实现具有线性复杂性,大大增加了每个查询所需的时间。我该如何利用DataTime列上的排序以及二进制搜索来获得对数复杂度?

0 个答案:

没有答案