Я читаю этот вопрос и пытаюсь воспроизвести проблему.
Однако я получаю совершенно другой оптимизированный план, чем план операции.
Код операции:
spark.udf.register("inc", (x: Long) => x + 1)
val df = spark.sql("select sum(inc(vals)) from data")
df.explain(true)
df.show()
Оптимизированный план операции:
== Optimized Logical Plan ==
Aggregate [sum(inc(vals#4L)) AS sum(inc(vals))#7L]
+- LocalRelation [vals#4L]
Мой код:
val df1 = spark.read
.option("sep", "\t")
.option("inferSchema", "true")
.option("header", "true")
.csv("D:/playground/pylearner.tsv")
.withColumn("Month_year",trim($"Month_year"))
df1.createOrReplaceTempView("pylearner")
df1.show()
spark.udf.register("inc", (x: Long) => x + 1)
val df = spark.sql("select sum(inc(ID)) from pylearner")
df.explain(true)
df.show()
Мой оптимизированный план:
== Optimized Logical Plan ==
Aggregate [sum(if (isnull(cast(ID#10 as bigint))) null else UDF:inc(cast(ID#10 as bigint))) AS sum(UDF:inc(cast(ID as bigint)))#45L]
+- Project [ID#10]
+- Relation[ID#10,TYPE_ID#11,Month_year#12,Amount#13] csv