我正在使用python spark sql来读取Kinesis发送的流文件 . 嵌套的Json流将保存并压缩到S3存储桶中 . 这些gzip文件不是标准的json格式,只是有一堆json对象没有逗号分隔 . 它在文件的开头和结尾都没有[] . 下面是示例,示例中有2个json对象,我希望每个对象可以是输出中的一行:

{
    "id": "0001",
    "type": "donut",
    "name": "Cake",
    "ppu": 0.55,
    "batters":
        {
            "batter":
                [
                    { "id": "1001", "type": "Regular" },
                    { "id": "1002", "type": "Chocolate" },
                    { "id": "1003", "type": "Blueberry" },
                    { "id": "1004", "type": "Devil's Food" }
                ]
        }
}
{
    "id": "0002",
    "type": "donut",
    "name": "Cake",
    "ppu": 0.65,
    "batters":
        {
            "batter":
                [
                    { "id": "1221", "type": "Regular" },
                    { "id": "1223", "type": "Chocolate" },
                    { "id": "1225", "type": "Blueberry" },
                    { "id": "1228", "type": "Devil's Food" }
                ]
        }
}

我可以使用pyspark sqlContext.read.json('streaming.json') 来读取此文件,但该函数只返回第一个对象 . 当我将[]和逗号分隔添加到那些json对象时,它会成功读取这两个对象 . 但在我的情况下,我每天有1 TB的文件,很难将流式传输转换为标准的json文件 . 我是新来的火花,有没有办法使用spark或sparkSQL读取那些流式json对象?我期望的输出是json flatten csv或dataframe保存回S3 . 非常感谢 .