【发布时间】:2017-06-06 09:13:34
【问题描述】:
假设我们在 Spark 中有一个 dataset/dataframe,其中有 3 列
ID、Word、Timestamp
我想写一个UDAF 函数,我可以在其中做这样的事情
df.show()
ID | Word | Timestamp
1 | I | "2017-1-1 00:01"
1 | am | "2017-1-1 00:02"
1 | Chris | "2017-1-1 00:03"
2 | I | "2017-1-1 00:01"
2 | am | "2017-1-1 00:02"
2 | Jessica | "2017-1-1 00:03"
val df_merged = df.groupBy("ID")
.sort("ID", "Timestamp")
.agg(custom_agg("ID", "Word", "Timestamp")
df_merged.show
ID | Words | StartTime | EndTime |
1 | "I am Chris" | "2017-1-1 00:01" | "2017-1-1 00:03" |
1 | "I am Jessica" | "2017-1-1 00:01" | "2017-1-1 00:03" |
问题是如何确保Words 列在我的UDAF 中以正确的顺序合并?
【问题讨论】:
-
从
udaf返回的列将始终位于数据帧中列的末尾。但是您可以使用select随意订购它们。
标签: scala apache-spark apache-spark-2.0