我有一个数据集,我想用一种更灵活的方式来对分组数据进行分组和编辑。例如,我想从此数据集中的每组名称中删除第二个Random_Text,并连接其余文本:
以随机数据集为例
+-------+-----------+
| Names|Random_Text|
+-------+-----------+
|Michael| Hello|
| Jim| Good|
| Bob| How|
|Michael| Good|
|Michael| Morning|
| Bob| Are|
| Bob| You|
| Bob| Doing|
| Jim| Bye|
+-------+-----------+
我希望数据集看起来像这样:
+-------+-------------+
| Names| Random_Text|
+-------+-------------+
|Michael|Hello Morning|
| Jim| Good|
| Bob|How You Doing|
+-------+-------------+
我想我需要定义某种自定义的用户定义聚合函数,但我想不出它在Java中是什么样子的。我浏览了文档,但我找不到任何在Java中有意义的具体内容:https://spark.apache.org/docs/3.0.2/api/java/org/apache/spark/sql/functions.htmlhttps://docs.databricks.com/udf/aggregate-scala.html
Dataset<Row> random_text = dtf.groupBy(col("Names")).apply(???)
Dataset<Row> random_text = dtf.groupBy(col("Names")).agg(???)
1条答案
按热度按时间whlutmcx1#
您可以使用窗口函数
row_number
从每组中识别第二个Random_Text,然后对其进行过滤。所需导入:
代码: