-1

我有一个需要生成为 json 文件的配置单元表。为了实现它,我已申请collect_list(struct(fields..))为 A 并将其保存为 json 使用spark.write.json.

但是 json 在开头有一个我不需要的附加索引字段“A”。我只需要 json 值的数组。我正在使用 pyspark

例如:

A:{[array of jsons]}
Expected: [array of json]
4

2 回答 2

0

与其写成Json格式,不如试着写成CSV格式。

您可以尝试转换Array类型,String然后将数据写入 HDFS 目录。

Example:

Scala:

val df=Seq((1,2,3),(3,4,5),(1,3,1)).toDF("i","j","k")

val df1=df.groupBy("i").agg(collect_set("j").alias("j")).selectExpr("cast(j as string)j")

df1.repartition(1).write.option("quote", "\u0000").mode("overwrite").csv("<hdfs_path>")

Output data:

[2, 3]
[4]

(或者)

Pyspark:

df=spark.createDataFrame([(1,2,3),(3,4,5),(1,3,1)],["i","j","k"])

from pyspark.sql.functions import *

df1=df.groupBy("i").agg(collect_set("j").alias("j")).selectExpr("cast(j as string)j")

df1.repartition(1).write.option("quote", "").mode("overwrite").csv("<hdfs_path>")

Output data:

[2, 3]
[4]
于 2019-09-17T20:54:21.647 回答
-1

生成collect_list(struct)json 后。要删除索引A,我将其读入 pandas 数据框并通过将其再次保存为 json Setting 来删除索引orient='records'

注意:collect_listof struct 仅适用于 spark SQL。蜂巢不支持它

于 2019-11-19T14:38:26.927 回答