Преобразовать искровой фрейм данных со строковым столбцом в столбец StructType - PullRequest
0 голосов
/ 26 января 2020

У меня есть 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")

Но он принимает это как string столбец.

df1.printScema() --> String

1 Ответ

0 голосов
/ 26 января 2020

Ваш файл в формате json, с первой строкой как "message".
Первая строка может быть проигнорирована с помощью опции "DROPMALFORMED" при чтении с использованием Spark's 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...