我有一个CSV
文件,其标题为“邮件”,行为
{"a":1,"b":"hello 1","c":"1234"}
{"a":2,"b":"hello 2","c":"2345"}
我想将它们转换为不同的列a,b,c
。
我尝试了以下代码:
df1 = spark.read.format("csv").option("header","true")
.option("delimiter","^")
.option("inferSchema","false")
.load("testing.csv")
但是它将其作为string
列。
df1.printScema() --> String
答案 0 :(得分:0)
您的文件为json格式,第一行为“ message”。
在使用Spark的"DROPMALFORMED"
DataFrameReader
忽略第一行
file : json-test.txt
message
{"a":1,"b":"hello 1","c":"1234"}
{"a":2,"b":"hello 2","c":"2345"}
通过忽略不良记录[初始记录]来读取json文件:
val jsondf = spark.read
.option("multiLine", false)
.option("mode", "DROPMALFORMED")
.json("files/file-reader-test/json-test.txt")
jsondf.show()
输出:
+---+-------+----+
| a| b| c|
+---+-------+----+
| 1|hello 1|1234|
| 2|hello 2|2345|
+---+-------+----+
模式:
jsondf.printSchema()
root
|-- a: long (nullable = true)
|-- b: string (nullable = true)
|-- c: string (nullable = true)