我想以特定的方式将Spark DataFrame转换为另一个DataFrame,如下所示:
我有Spark DataFrame:
col des
A a
A b
B b
B c
作为操作的结果,我希望还有一个Spark DataFrame:
col des
A a,b
B b,c
我试图使用:
结果< - 汇总(groupBy(df,df $ col),des = n(df $ des))
结果我获得了计数。是否有任何参数(汇总或聚合)将列转换为列表或类似的东西,但假设所有操作都在Spark上完成?
提前谢谢
答案 0 :(得分:2)
这是scala中的解决方案,你需要弄清楚SparkR。
val dataframe = spark.sparkContext.parallelize(Seq(
("A", "a"),
("A", "b"),
("B", "b"),
("B", "c")
)).toDF("col", "desc")
dataframe.groupBy("col").agg(collect_list(struct("desc")).as("desc")).show
希望这有帮助!
答案 1 :(得分:1)
sparkR代码:
sc <- sparkR.init()
sqlContext <- sparkRSQL.init(sc)
#create R data frame
df <- data.frame(col= c("A","A","B","B"),des= c("a","b","b","c"))
#converting to spark dataframe
sdf <- createDataFrame( sqlContext, df)
registerTempTable(sdf, "sdf")
head(sql(sqlContext, "SQL QUERY"))
在其中编写相应的sql查询并执行它。