如何从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”别名?的主要内容,如果未能解决你的问题,请参考以下文章
Spark Structured Streaming - 如何按最新和聚合计数进行重复数据删除
在 Spark 结构化流中,我如何将完整的聚合输出到外部源,如 REST 服务