如何从Spark中的聚合结构对象中删除“ col1”别名?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Spark中的聚合结构对象中删除“ col1”别名?相关的知识,希望对你有一定的参考价值。

我正在尝试将json对象聚合到json列表中-动态创建使用各种字段创建的结构对象。每次我使用以下代码段创建汇总时:

  batched = dataset.select(col(asteriskChar), row_number()
                       .over(Window.orderBy(order)).alias(rowNumAlias))
                       .withColumn(batchAlias, functions.ceil(col(rowNumAlias).divide(batchSize)))
                       .groupBy(col(batchAlias))  .agg(functions.collect_list(struct(structCol)).alias(batchedColAlias));

我希望具有如下所示的对象批处理:

[
 
      "id": 1,
      "first": "John",
      "last": "Thomas",
      "score": 88
  ,
  
      "id": 2,
      "first": "Anne",
      "last": "Jacobs",
      "score": 32
  
]

,但我得到以下信息:

[
  
    "col1": 
      "id": 1,
      "first": "John",
      "last": "Thomas",
      "score": 88
    
  ,
  
    "col1": 
      "id": 2,
      "first": "Anne",
      "last": "Jacobs",
      "score": 32
    
  
]

如何摆脱“ col1”字段并使这些jsons成为数组中的单个对象?预先谢谢你。

答案

很可能您在那里不需要struct

.groupBy(col(batchAlias))
.agg(functions.collect_list(structCol).alias(batchedColAlias));

以上是关于如何从Spark中的聚合结构对象中删除“ col1”别名?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用group by聚合spark中的结构数组

Spark Structured Streaming - 如何按最新和聚合计数进行重复数据删除

JAVA spark数据集中的GroupBy和聚合函数

在 Spark 结构化流中,我如何将完整的聚合输出到外部源,如 REST 服务

将 spark 数据帧聚合转换为 SQL 查询; window、groupby 的问题,以及如何聚合?

删除同一目录中多个CSV文件中的前两列和最后一列