使用pyspark读取S3中的流式json文件
我正在使用python spark sql读取从Kinesis发送的流文件。嵌套的Json流保存并压缩到S3 bucket中。这些gzip文件不是标准的json格式,它只是有一堆json对象,没有逗号分隔。并且在文件的开头和结尾都没有[]。以下是示例,示例中有2个json对象,我希望每个对象都可以是输出中的一行:使用pyspark读取S3中的流式json文件,json,pyspark,spark-streaming,spark-dataframe,pyspark-sql,Json,Pyspark,Spark Streaming,Spark Dataframe,Pyspark Sql,我正在使用python spark sql读取从Kinesis发送的流文件。嵌套的Json流保存并压缩到S3 bucket中。这些gzip文件不是标准的json格式,它只是有一堆json对象,没有逗号分隔。并且在文件的开头和结尾都没有[]。以下是示例,示例中有2个json对象,我希望每个对象都可以是输出中的一行: { "id": "0001", "type": "donut", "name": "Cake", "ppu": 0.55, "batters":
{
"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" }
]
}
}
我可以使用pysparksqlContext.read.json('streaming.json')
读取此文件,但函数只返回第一个对象。当我向这些json对象添加[]和逗号separate时,它成功地读取了这两个对象。但在我的例子中,我每天有1 TB的文件,很难将流媒体转换成标准json文件。我是spark的新手,有没有一种方法可以使用spark或sparkSQL读取这些流json对象?我期望的输出是json展平csv或保存回S3的数据帧。非常感谢