我有这段代码:
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作为文字值。