У меня есть файл CSV
, который очень неприятно анализировать.Он содержит столбцы с двойными кавычками и запятыми для строки столбца, за которым следует JSON в другом столбце.Пример:
+----------+-------------------+--------------------------------------+-------------------------+
| column1| column2 | jsonColumn1 | jsonColumn2
+----------+-------------------+--------------------------------------+-----------------------
| 201 | "1", "ABC", "92" | [{ "Key1": 200,"Value1": 21 }, |[{"date":"9999-09-26T08:50:06Z","fakenumber":"1-877-488-2364-","fakedata":"4.20","fakedata2":"102332.06"}]
{"Key2": 200, "Value2" : 4}]
+------+--------------------------------------------------------------+---------------------------------
Мне нужно извлечь его с помощью Scala. Как заставить его игнорировать запятые в столбце 2 и добавить пару значений ключа выбора в качестве нового столбца для каждой строки?Я хочу, чтобы это выглядело так:
+----------+-------------------+--------------------------------------+-------------------------+-------------------------+--------------------------------
| column1| column2 | jsonColumn1 | jsonColumn2 | jsonColumn1Key | jsonColumnDate
+----------+-------------------+--------------------------------------+-----------------------+----------------+--------------------------------------+
| 201 | "1", "ABC", "92" | Keep Orginal Record |keep original record | 200 | 9999-09-26T08:50:06Z
+------+--------------------------------------------------------------+---------------------------------
. До сих пор я импортировал данные, создал schema
(до синтаксического анализа), а затем с помощью structfield
добавил новую схему вinnerjson
для столбцов с JSON.
import org.apache.spark.sql.types._
csvSchema = StructType(
.add("column1", StringType, true)
.add("column2", StringType, true)
.add("jsonColumn1", StringType, true)
.add("jsonColumn2", StringType, true)
Первая проблема, с которой я столкнулся, - это столбец 2. Как мне обойти это?Для анализа JSON в CSV я собирался эмулировать подобное решение здесь: разделить значение JSON из файла CSV и создать новый столбец на основе ключа json в Spark / Scala
EDIT
csvfile = sqlContext.read.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.option("quote", "\"")
.option("escape", "\"")
.load("file.csv")
display(csvfile)