Разбор файла CSV с массивом JSON с помощью Scala - PullRequest
0 голосов
/ 12 октября 2018

У меня есть файл 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...