我设置了这个设置:--conf spark.sql.autoBroadcastJoinThreshold=209715200 //200mb
我想把这个数量减少到比特定的数据帧高一点(让我们称之为bdrDf
)
我试图估计bdrDf
:
import org.apache.commons.io.FileUtils
val bytes = sparkSession.sessionState.executePlan(bdrDf.queryExecution.logical)
.optimizedPlan.stats(sparkSession.sessionState.conf).sizeInBytes
println("bdrDfsize mb:" + FileUtils.byteCountToDisplaySize(bytes.toLong))
我有 :58 MB
这是 Spark 在检查数据帧是否低于或不低于时将获得的大小spark.sql.autoBroadcastJoinThreshold
?
我还看到了 sparkUI 的这个指标:
它对应于492 MB
我的价值观之一是否正确?如果没有,如何估计我的数据框的大小?
代码:
val Df= readFromHive()
import org.apache.commons.io.FileUtils
def checkSize(df: DataFrame)(implicit spark: SparkSession) = {
df.cache.foreach(el => el)
val catalyst_plan = df.queryExecution.logical
val df_size_in_bytes = spark.sessionState.executePlan(catalyst_plan).optimizedPlan.stats(sparkSession.sessionState.conf).sizeInBytes
logger.info("size in mO:" +
FileUtils.byteCountToDisplaySize(df_size_in_bytes.toLong))
logger.info("size bytes:" + df_size_in_bytes)
}
checkSize(Df)