spark:如何在没有StructField的情况下读取json列表?

时间:2018-02-11 07:15:06

标签: json apache-spark pyspark spark-dataframe

有些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的{​​{1}}必须是StructType。 如何在没有StructField的情况下将这种json列表读取到具有指定spark.read.json的DataFrame?

1 个答案:

答案 0 :(得分:1)

看起来你可以这样做:

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))