Импорт текстового файла с различным количеством столбцов в Spark - PullRequest
0 голосов
/ 03 мая 2018

У меня есть файл с разделителями канала с различным количеством столбцов, например:

id|name|attribute|extraattribute
1|alvin|cool|funny
2|bob|tall
3|cindy|smart|funny

Я пытаюсь найти элегантный способ импортировать это в фрейм данных, используя pyspark. Я мог бы попытаться исправить файлы, чтобы добавить конечный | когда отсутствует последний столбец (может отсутствовать только последний столбец), но он хотел бы найти решение, не включающее изменение входных файлов.

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете использовать метод csv в модуле pyspark.sql.readwriter и установить mode="PERMISSIVE":

df = sqlCtx.read.csv("/path/to/file.txt", sep="|", mode="PERMISSIVE", header=True)
df.show(truncate=False)
#+---+-----+---------+--------------+
#|id |name |attribute|extraattribute|
#+---+-----+---------+--------------+
#|1  |alvin|cool     |funny         |
#|2  |bob  |tall     |null          |
#|3  |cindy|smart    |funny         |
#+---+-----+---------+--------------+

Из документов:

PERMISSIVE: устанавливает для других полей значение NULL при обнаружении поврежденного запись.

Когда схема задается пользователем, для дополнительных полей устанавливается ноль.

Это намного проще, чем , что я изначально предлагал в комментариях .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...