在Scala/Spark聚合函数中,lit(0)和lit(1)做什么?



我有这段代码:

val df = resultsDf
.withColumn("data_exploded", explode(col("data_item")))
.groupBy("data_id","data_count")
.agg(
count(lit(1)).as("aggDataCount"),
sum(when(col("data_exploded.amount")==="A",col("data_exploded.positive_amount")).otherwise(lit(0))).as("aggAmount")
)

lit(0)是指向位置0的索引,还是指向数字0的文字值?我在https://mungingdata.com/apache-spark/spark-sql-functions/#:~:text=The%20lit()%20function%20creates,spanish_hi%20column%20to%20the%20DataFrame.&text=The%20lit()%20function%20is%20especially%20useful%20when%20making%20boolean%20comparisons上看到的定义说:"lit()函数从一个文字值中创建一个Column对象。"这个定义让我认为它不是指一个索引位置,而是指一个文字值,比如一个数字或字符串。然而,对我来说,count(lit(1)).as("aggDataCount")中的用法看起来像是引用列的索引位置。谢谢你。

lit(1)表示文字值1

count(lit(1)).as("aggDataCount")是一种计算行数的方法(每行有一个值为1的列,并将该列相加)

在spark中表示文字值。

亮了(0)——比;将0作为列中的值,lit(1)——>表示将1作为列中的值。

在上面显示的代码中,它们对2列应用聚合,并在一个条件下保存count(lit(1))中的行数。

下一个lit(0)在else子句中,类似于else条件。Lit(0)将在列中添加0作为文字值。

最新更新