【发布时间】:2020-10-22 10:11:44
【问题描述】:
我正在尝试将 json 文件转换为 avro 和反向。
我的输入文件是
[
{
"userId": 1,
"firstName": "Krish",
"lastName": "Lee",
"phoneNumber": "123456",
"emailAddress": "krish.lee@abc.com"
},
{
"userId": 2,
"firstName": "racks",
"lastName": "jacson",
"phoneNumber": "123456",
"emailAddress": "racks.jacson@abc.com"
}
]
我的输出文件是
{"emailAddress":"krish.lee@abc.com","firstName":"Krish","lastName":"Lee","phoneNumber":"123456","userId":1}
{"emailAddress":"racks.jacson@abc.com","firstName":"racks","lastName":"jacson","phoneNumber":"123456","userId":2}
下面是我的源码
JSON 到 Avro
val df = spark.read.option("multiLine", true).json("src\\main\\resources\\user.json")
df.printSchema()
df.show()
//convert to avro
df.write.mode("append").format("com.databricks.spark.avro").save("src\\main\\resources\\user1")
AVRO 转 JSON
val jsonDF = spark.read
.format("com.databricks.spark.avro").load("src\\main\\resources\\user")
jsonDF.show()
jsonDF.printSchema()
jsonDF.write.mode(SaveMode.Overwrite).json("src\\main\\resources\\output\\json")
请帮忙
【问题讨论】:
-
你有什么问题?
-
如果您查看输入文件,它是一个包含多个对象的列表。在输出文件中,我只得到一个对象,它不是一个列表。
-
在写的时候需要把数据转换成数组再写。
标签: scala apache-spark avro