Apache spark 将带字符串列的spark dataframe转换为StructType列

Apache spark 将带字符串列的spark dataframe转换为StructType列,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我有一个CSV文件,标题为“message”,行为 {"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")

我有一个
CSV
文件,标题为“message”,行为

{"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")
但它把它当作一个
字符串

df1.printScema() --> String

您的文件是json格式的,第一行是“message”。
在使用Spark的DataFrameReader进行读取时,可以使用选项“DROPMALFORMED”忽略第一行

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()
输出:

模式:


这看起来像是json而不是csv我们得到的是csv文件格式,不是json文件
+---+-------+----+
|  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)