0
Spark 문서의 첫 번째 함수를 읽는 중 ignoreNulls가 첫 번째 null이 아닌 값을 가져올 것이라고 언급했습니다.DataFrame 첫 번째 함수 ignoreNulls가 작동하지 않습니다.
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.{Window, WindowSpec}
object tmp {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().master("local") getOrCreate()
import spark.implicits._
val input = Seq(
(1234, 1, None),
(1234, 2, Some(1)),
(5678, 1, Some(11)),
(5678, 2, Some(22))
).toDF("service_id", "counter", "value")
lazy val window: WindowSpec = Window.partitionBy("service_id").orderBy("counter")
val firsts = input.withColumn("first_value", first("value", ignoreNulls = true).over(window))
firsts.orderBy("service_id", "counter").show()
}
}
그러면 다음과 같은 결과가 반환됩니다. 나는 FIRST_VALUE의 첫 번째 행에 null 값이 내가 여기서 뭔가
+----------+-------+-----+-----------+
|service_id|counter|value|first_value|
+----------+-------+-----+-----------+
| 1234| 1| null| null|
| 1234| 2| 1| 1|
| 5678| 1| 11| 11|
| 5678| 2| 22| 11|
+----------+-------+-----+-----------+
감사합니다. 그것들은 디폴트 값 이었음에 틀림 없다. – xstack2000
내 기쁨 @ xstack2000, :) 그리고 upvote 및 수용에 대한 감사합니다 –