kar*_*r09 8 mapreduce query-optimization apache-spark apache-spark-sql pyspark
在我的理解中,柱状格式更适合 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)
我只简单地读过这一点,但似乎这个一般逻辑是成立的:
柱状格式可帮助您最有效地选择某些列。行格式可帮助您最有效地选择某些行。
因此,当您想要多次选择某些行“例如每个国家、每天……”时,采用基于行的格式并在过滤器列上设置索引通常是有意义的。
这也是一个参考,其中显示要定义索引:https://spark.apache.org/docs/3.0.0/sql-ref-syntax-qry-select-hints.html
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |