数据 :
1,Coke
1,Beans
1,paper
2,Beans
2,Pen
2,Sheets
2,Banana
预期产量:
+---+------------------------+
| 1|Coke,Beans,Paper |
| 2|Beans,Pen,Sheets,Banana |
+---+------------------------+
我可以通过编写sql查询来实现。
val df = sparkSession.read.csv("file_location")
df.registerTempTable("data")
val result = sparkSession
.sql("select _c0 ,concat_ws(',', collect_list(_c1)) as product from data group by _c0")
result.show
请使用dataframe/Dataset
功能(select,groupby,agg等)帮助我达到相同的结果。
这很简单,您可以在这里找到答案,但是我希望我不仅仅是在做某种研究生作业。ADataFrame
就像SQL表一样,因此您可以使用其方法查询它。
import org.apache.spark.sql.functions._
val df = sc.parallelize(List(
(1, "Coke"),
(1, "Beans"),
(1,"paper"),
(2,"Beans"),
(2,"Pen"),
(2,"Sheets"),
(2,"Banana")
)).toDF("id", "product_name")
df.groupBy("id").agg(concat_ws(",", collect_list("product_name")).as("product_list")).show()
输出为:
+---+-----------------------+
|id |product_list |
+---+-----------------------+
|1 |Coke,Beans,paper |
|2 |Beans,Pen,Sheets,Banana|
+---+-----------------------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句