Как проанализировать столбец объекта json внутри CSV с помощью Spark SQL - PullRequest
0 голосов
/ 14 сентября 2018

У меня возникла проблема при чтении и анализе файла CSV.У меня есть JSON в столбце с именем CONTENT.Файл выглядит так:

TEMPLATE_SECTION_ID,BUSINESS_ID,TEMPLATE_ID,SECTION_NAME,CONTENT,VERSION,CREATED_DATE,CREATED_BY_ID,MODIFIED_DATE,MODIFIED_BY_ID
"1234577d1c74680083",12345,"12345e401477d1c7422007b","BONUS_SECTION","{"groupBy":"TOTAL","showAllItems":true,"labels":[{"name":"Released","label":"Released"},{"name":"Held","label":"Held"},{"name":"Holds Released","label":"Holds Released"}]}",2,"2018-01-1 01:00:00.0",12345678,"2018-01-01 01:00:00.0",12345678

Я пытался прочитать его, используя:

Dataset<Row> df2 = spark.read().option("multiLine", "true").option("inferSchema", "true").option("header", "true").format("csv").load("/xc_inct_stmt_tmpl_section_header.csv").toDF();
df2.show();

Вывод:

+ -------------------- + ----------- + -------------------- + ------------- + ------------------- + ------------------ + -------------------- + ------------------- + -------------- + --------------- + |TEMPLATE_SECTION_ID | BUSINESS_ID |TEMPLATE_ID |SECTION_NAME |СОДЕРЖАНИЕ |версия |CREATED_DATE |CREATED_BY_ID |MODIFIED_DATE |MODIFIED_BY_ID |+ -------------------- + ----------- + -------------------- + ------------- + ------------------- + ------------------- + -------------------- + ------------------- +-------------- + --------------- + | 8a7abc10477ba1e40 ... |
4549 | 8a7abc10477ba1e40 ... | BONUS_SECTION | "{ "GroupBy": "TOTAL" | "showAllItems": настоящая | "метка": [{ "имя" ... | "этикетка": "Отменено"} | { "имя": "Held" | "метка":«Проведено»} | + -------------------- + ----------- + -------------------- + ------------- + ------------------- + ------------------- + -------------------- + ------------------- + -------------- + --------------- +

Ожидаемый результат:

+ ------------------- + ----------- + -------------------- + ------------- + -------------------- + ------- + ------------------- + ------------- + ------------------- + -------------- + | TEMPLATE_SECTION_ID | BUSINESS_ID | TEMPLATE_ID | SECTION_NAME |
CONTENT | VERSION | CREATED_DATE | CREATED_BY_ID |
MODIFIED_DATE | MODIFIED_BY_ID| + ------------------- + ----------- + -------------------- + ------------- + -------------------- + ------- + ------------------- + ------------- +------------------- + -------------- + |1234577d1c74680083 |
12345 | 12345e401477d1c74 ... | BONUS_SECTION | "{" groupBy ":" TOTA ... |
2 | 2018-01-01 02: 00: 00 |12345678 | 2018-01-01 02: 00: 00 |
12345678 |+ ------------------- + ----------- + -------------------- + ------------- + -------------------- + ------- + ------------------- + ------------- + -------------------+ -------------- +

Я испробовал все возможные варианты, такие как quote, quoteMode, delimiter, parserLib и т. Д.

MyПодробности env: Spark 2.2.1 с java1.8

...