gpt4 book ai didi

java - 如何获取使用 concat_ws 生成的结果的大小?

转载 作者:行者123 更新时间:2023-12-03 19:34:59 27 4
gpt4 key购买 nike

我正在对 COL1 执行 groupBy 并使用 concat_ws 获取 COL2 的串联列表。我如何获得该列表中的值计数?这是我的代码:

Dataset<Row> ds = df.groupBy("COL1").agg(org.apache.spark.sql.functions
.concat_ws(",",org.apache.spark.sql.functions.collect_list("COL2")).as("sample"));

最佳答案

使用size功能。

size(e: Column): Column Returns length of array or map.


以下示例是在 Scala 中编写的,您可以将其转换为 Java,但无论使用哪种编程语言,总体思路都是完全相同的。

val input = spark.range(4)
.withColumn("COL1", $"id" % 2)
.select($"COL1", $"id" as "COL2")
scala> input.show
+----+----+
|COL1|COL2|
+----+----+
| 0| 0|
| 1| 1|
| 0| 2|
| 1| 3|
+----+----+

val s = input
.groupBy("COL1")
.agg(
concat_ws(",", collect_list("COL2")) as "concat",
size(collect_list("COL2")) as "size") // <-- size
scala> s.show
+----+------+----+
|COL1|concat|size|
+----+------+----+
| 0| 0,2| 2|
| 1| 1,3| 2|
+----+------+----+

在 Java 中如下所示。谢谢Krishna Prasad与 SO/Spark 社区共享代码!

Dataset<Row> ds = df.groupBy("COL1").agg(
org.apache.spark.sql.functions.concat_ws(",",org.apache.spark.sql.functions.collect_list("‌​COL2")).as("sample")‌​,
org.apache.spark.sql.functions.size(org.apache.spark.sql.functions.collect_list("COL2‌​")).as("size"));

关于java - 如何获取使用 concat_ws 生成的结果的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com