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}]