Apache spark 使用数据帧进行聚合
我是新手。需要关于使用dataframe在Spark中实现逻辑的帮助。 假设我有一个带有以下数据的数据帧df1 DF1: 我希望使用dataframe(不使用spark sql)以以下格式获得所需的输出。基本上,我希望在productid上执行group by,并希望选择事务id的最大值和该事务id的desc 结果:Apache spark 使用数据帧进行聚合,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我是新手。需要关于使用dataframe在Spark中实现逻辑的帮助。 假设我有一个带有以下数据的数据帧df1 DF1: 我希望使用dataframe(不使用spark sql)以以下格式获得所需的输出。基本上,我希望在productid上执行group by,并希望选择事务id的最大值和该事务id的desc 结果: txn-id,productid,desc 1,'AA','ADESC' 4,'BB','ZDESC' 5,'CC','YDESC' 你能帮我解释一下逻辑吗 谢谢, Sumit在
txn-id,productid,desc
1,'AA','ADESC'
4,'BB','ZDESC'
5,'CC','YDESC'
你能帮我解释一下逻辑吗
谢谢,
Sumit在productidcol上使用带分区的窗口
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._
df1.select(col("*"), row_number.over(
Window.partitionBy("productid").orderBy(col("txn-id").desc)
).as("rnum")).filter(col("rnum") === 1).drop("rnum")
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._
df1.select(col("*"), row_number.over(
Window.partitionBy("productid").orderBy(col("txn-id").desc)
).as("rnum")).filter(col("rnum") === 1).drop("rnum")