查询Spark中并行集合的执行统计信息

时间:2018-07-05 14:37:26

标签: scala apache-spark

在Spark 2.3.0中为一个简单的并行化集合计算统计信息时,我得到一些奇怪的结果:

val df = spark.sparkContext.parallelize(Seq("y")).toDF("y")
df.queryExecution.stringWithStats

== Optimized Logical Plan 
== Project [value#7 AS y#9], Statistics(sizeInBytes=8.0 EB, hints=none)
+- SerializeFromObject [staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, input[0, java.lang.String, true], true, false) AS value#7], Statistics(sizeInBytes=8.0 EB, hints=none)    
+- ExternalRDD [obj#6], Statistics(sizeInBytes=8.0 EB, hints=none)

那是8.0艾字节的数据。

如果我做同样的事情而没有并行化

== Optimized Logical Plan 
== LocalRelation [x#3], Statistics(sizeInBytes=20.0 B, hints=none)

很显然,在对集合进行序列化时,存在一个副作用,即查询计划程序无法准确确定其大小。我在这里想念东西吗?

0 个答案:

没有答案