我有一个问题,我需要将一行转换为多行。这是基于我具有的另一个映射。我尝试在下面提供示例。
假设我有一个具有以下架构的实木复合地板文件
ColA, ColB, ColC, Size, User
我需要根据查找映射将以上数据聚合到多行中。假设我有一张静态地图
ColA, ColB, Sum(Size)
ColB, ColC, Distinct (User)
ColA, ColC, Sum(Size)
这意味着输入RDD中的一行需要转换为3行。我相信RDD是使用FlatMapPair的方法,但是我不确定该如何进行。
我也可以将列合并为一个键,例如ColA_ColB
等
感谢您的帮助。如果需要添加更多详细信息,请告诉我。
结果应该只有3列?我的意思是col1,col2,col3(汇总结果)。第二个汇总是不同的用户数? (我认为是)。
如果是这样,您基本上可以创建3个数据框,然后合并它们。某种方式:
val df1 = spark.sql(“选择colA作为col1,colB作为col2,sum(Size)作为colAgg group by colA,colB”)]
val df2 = spark.sql(“选择colB作为col1,colC选择为col2,将Distinct(User)选择为colAgg group by colB,colC”]]
val df3 = spark.sql(“选择colA作为col1,colC作为col2,sum(Size)作为colAgg group by colA,colC”)]
df1.union(df2).union(df3)