Spark 3.2计算DataFrame字节大小:executePlan参数取值疑问
Spark 3.2中sessionState.executePlan第二个参数的传入值问题
在Spark 3.2版本中调用spark.sessionState().executePlan()时,该方法要求传入两个参数:org.apache.spark.sql.catalyst.plans.logical.LogicalPlan和scala.Enumeration.Value,你的原代码因缺少第二个参数导致编译错误。
第二个参数的正确传入值
第二个参数需要传入org.apache.spark.sql.internal.SessionState.ExecuteMode枚举的实例,该枚举在Spark 3.2中有两个可选值:
EXECUTE_AND_COLLECT:用于执行计划并收集结果EXECUTE_AND_EVALUATE:用于执行计划并评估(仅获取元数据/统计信息,无需实际收集数据)
修正后的代码示例
如果你的需求只是获取DataFrame的大小统计,使用EXECUTE_AND_EVALUATE更高效,修正后的Java代码如下:
import org.apache.spark.sql.internal.SessionState; // 指定执行模式 SessionState.ExecuteMode executeMode = SessionState.ExecuteMode.EXECUTE_AND_EVALUATE; BigInt dfSize = getSparkSession().sessionState().executePlan(logicalPlan, executeMode).optimizedPlan().stats().sizeInBytes();
内容的提问来源于stack exchange,提问作者mbr
相关产品推荐
相关产品推荐

