Apache spark 火花连接优化
假设我有两个数据帧,我想使用“内部连接””连接它们:A和B,每一个都有100列和数十亿行 如果在我的用例中,我只对A的10列和B的4列感兴趣,Spark会为我做优化以处理这一点并只洗牌14列,还是会洗牌所有内容然后选择14列 问题1:Apache spark 火花连接优化,apache-spark,join,pyspark,apache-spark-sql,Apache Spark,Join,Pyspark,Apache Spark Sql,假设我有两个数据帧,我想使用“内部连接””连接它们:A和B,每一个都有100列和数十亿行 如果在我的用例中,我只对A的10列和B的4列感兴趣,Spark会为我做优化以处理这一点并只洗牌14列,还是会洗牌所有内容然后选择14列 问题1: A_select = A.select("{10 columns}").as("A") B_select = B.select("{4 columns}").as("B") result = A_select.join(B_select, $"A.id"==$"B
A_select = A.select("{10 columns}").as("A")
B_select = B.select("{4 columns}").as("B")
result = A_select.join(B_select, $"A.id"==$"B.id")
问题2:
A.join(B, $"A.id"==$"B.id").select("{14 columns}")
Query1==Query2是否在行为、执行时间、数据洗牌方面
提前感谢您的回答:是的,spark将为您处理优化。由于它的惰性评估行为,仅从datafrmes(A和B)中选择所需的属性 您可以使用
explain
功能查看逻辑/物理计划
result.explain()
两个查询将返回相同的物理计划。因此,执行时间和数据洗牌将是相同的
参考-用于解释功能