columnNameOfCorruptRecord (默认值是spark.sql.columnNameOfCorruptRecord中指定的值):允许重命名由 PERMISSIVE 模式创建的新字段(存储格式错误的字符串)。这会覆盖 spark.sql.columnNameOfCorruptRecord dateFormat dateFormat (默认yyyy-MM-dd):设置表示日期格式的字符串。自定义日期格式遵循 java.text.SimpleDateFormat 中的格式。 timestampFormat timestampFormat (默认yyyy-MM-dd'T'HH:mm:ss.SSSXXX):设置表示时间戳格式的字符串。 自定义日期格式遵循 java.text.SimpleDateFormat 中的格式。 multiLine false 解析可能跨越多行的一条记录

数据源格式:data.json:

"a":"字符串1", "b":2, "c":"", "d":null

结果显示结果却都在一列中,这并不是我要的结果:

val spark = SparkSession
      .builder()
      .config("spark.sql.warehouse.dir","file:///")
      .master("local")
      .getOrCreate()
val ds = spark.read.format("json")
       //将读取的数据全部转换成string数据类型
      .option("primitivesAsString","true")
      .load("./data.json")
ds.show()
ds.printSchema()

后来网上百度了许多,说的是spark 读取json格式是支持半结构化的数据。
后来我在网上找了个工具https://www.sojson.com/在线json格式转换
将数据压缩成单行模式
再跑一下程序

[{"a":"字符串1","b":2,"c":"","d":null}]