从火花数据框架生成一系列字段



我有一个带有6列的火花数据框架,该列产生的输出如下

c1 | c2 |  c3  |  c4  |  c5  | c6                                                                            
 1 |  2 |   3  |   4  |   5  |  6                                                   
 2 |  3 |   4  |  5   |  5   |  7

我需要将其转换为JSON文件,其中最后3列作为单个数组,看起来像下面的

{"c1":"1","c2":"2","c3" :"3",array["c4":"4","c5":"5","c6":"6"]}     
{"c1":"2","c2":"3","c3" :"4",array["c4":"5","c5":"6","c6":"7"]}

我知道我们可以通过调用df.toJson将数据框架转换为JSON文件。有人可以帮助我如何使用最后三个字段生成一个数组。

您的输出不是有效的JSON。我假设您想要的输出类似:

{
    "c1": "2",
    "c2": "3",
    "c3": "4",
    "remaining": {
        "c4": "5",
        "c5": "6",
        "c6": "7"
    }
}

在这种情况下,您可以使用以下代码进行操作:

import org.apache.spark.sql.functions._
val result = df.select($"c1", $"c2", $"c3", struct("c4", "c5", "c6").as("remaining")).toJSON

如果您实际上想要一个数组,但没有键,例如:

{
    "c1": "2",
    "c2": "3",
    "c3": "4",
    "array": ["5", "6", "7"]
}

然后您可以尝试以下代码:

import org.apache.spark.sql.functions._
val result = df.select($"c1", $"c2", $"c3", array("c4", "c5", "c6").as("array")).toJSON

相关内容

  • 没有找到相关文章

最新更新