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

2024-05-23

我正在表演groupBy在 COL1 上并使用 COL2 的串联列表concat_ws。我怎样才能获得该列表中的值的计数?这是我的代码:

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

Use size http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.functions%24@size(e:org.apache.spark.sql.Column):org.apache.spark.sql.Column功能。

大小(e:列):列返回数组或映射的长度。


以下示例使用 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 中,如下所示。谢谢克里希纳·普拉萨德 https://stackoverflow.com/users/5061863/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"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取使用 concat_ws 生成的结果的大小? 的相关文章

随机推荐