Чтение CSV-файла в искру с данными, содержащими запятые в указанном поле - PullRequest
1 голос
/ 23 декабря 2019

У меня есть данные CSV в файле (data.csv), например, так:

lat,lon,data
35.678243, 139.744243, "0,1,2"
35.657285, 139.749380, "1,2,3"
35.594942, 139.548870, "4,5,6"
35.705331, 139.282869, "7,8,9"
35.344667, 139.228691, "10,11,12"

Используя следующую команду оболочки оболочки:

spark.read.option("header", true).option("escape", "\"").csv("data.csv").show(false)

Я получаю следующий вывод:

+---------+-----------+----+
|lat      |lon        |data|
+---------+-----------+----+
|35.678243| 139.744243| "0 |
|35.657285| 139.749380| "1 |
|35.594942| 139.548870| "4 |
|35.705331| 139.282869| "7 |
|35.344667| 139.228691| "10|
+---------+-----------+----+

Я ожидаю, что запятые в двойных кавычках будут игнорироваться в соответствии с RFC 4180 , но синтаксический анализатор интерпретирует их как разделитель.

Использование опции quote также не имеет никакого эффекта:

scala> spark.read.option("header", true).option("quote", "\"").option("escape", "\"").csv("data.csv").show(false)
+---------+-----------+----+
|lat      |lon        |data|
+---------+-----------+----+
|35.678243| 139.744243| "0 |
|35.657285| 139.749380| "1 |
|35.594942| 139.548870| "4 |
|35.705331| 139.282869| "7 |
|35.344667| 139.228691| "10|
+---------+-----------+----+

Также нет опций:

scala> spark.read.option("header", true).csv("data.csv").show(false)
+---------+-----------+----+
|lat      |lon        |data|
+---------+-----------+----+
|35.678243| 139.744243| "0 |
|35.657285| 139.749380| "1 |
|35.594942| 139.548870| "4 |
|35.705331| 139.282869| "7 |
|35.344667| 139.228691| "10|
+---------+-----------+----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...