在我的理解中,柱状格式更适合 Map Reduce 任务。即使对于某些列的选择,柱状也能很好地工作,因为我们不必将其他列加载到内存中。
但是在 Spark 3.0 中,我看到这个ColumnarToRow操作被应用于查询计划中,根据我从文档中可以理解的内容将数据转换为行格式。
它比柱状表示的效率如何,支配该规则应用的见解是什么?
对于以下代码,我附上了查询计划。
import pandas as pd
df = pd.DataFrame({
'a': [i for i in range(2000)],
'b': [i for i in reversed(range(2000))],
})
df = spark.createDataFrame(df)
df.cache()
df.select('a').filter('a > 500').show()
Run Code Online (Sandbox Code Playgroud)
mapreduce query-optimization apache-spark apache-spark-sql pyspark