spark:如何在没有 StructField 的情况下读取 json 列表?
spark: How to read json list without StructField?
有些 ETL 作业需要阅读 json,例如:
[{"f1":1, "f2":2}, {"f1":10, "f2":20}, {"f1":4, "f2":8}]
[{"f1":3, "f2":5}]
[{"f1":7, "f2":9}, {"f1":111, "f2":2}]
每一行输入文件都是一个 json 列表。
但是,schema
for spark.read.json
必须是 StructType。
如何将这种没有 StructField 的 json 列表读取到具有指定 schema
的 DataFrame?
看起来你可以这样做:
spark.read
.json("src/test/resources/test.json")
.show()
打印:
+---+---+
| f1| f2|
+---+---+
| 1| 2|
| 10| 20|
| 4| 8|
| 3| 5|
| 7| 9|
|111| 2|
+---+---+
其中 spark 的推导模式是:
println(spark.read.json("src/test/resources/test.json").schema)
> StructType(StructField(f1,LongType,true), StructField(f2,LongType,true))
有些 ETL 作业需要阅读 json,例如:
[{"f1":1, "f2":2}, {"f1":10, "f2":20}, {"f1":4, "f2":8}]
[{"f1":3, "f2":5}]
[{"f1":7, "f2":9}, {"f1":111, "f2":2}]
每一行输入文件都是一个 json 列表。
但是,schema
for spark.read.json
必须是 StructType。
如何将这种没有 StructField 的 json 列表读取到具有指定 schema
的 DataFrame?
看起来你可以这样做:
spark.read
.json("src/test/resources/test.json")
.show()
打印:
+---+---+
| f1| f2|
+---+---+
| 1| 2|
| 10| 20|
| 4| 8|
| 3| 5|
| 7| 9|
|111| 2|
+---+---+
其中 spark 的推导模式是:
println(spark.read.json("src/test/resources/test.json").schema)
> StructType(StructField(f1,LongType,true), StructField(f2,LongType,true))