簡體   English   中英

將帶有字符串列的 spark 數據框轉換為 StructType 列

[英]Convert spark dataframe with string column to StructType column

我有一個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

您的文件為 json 格式,第一行為“消息”。
使用 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()

輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM