Как прочитать строку JSON из строки в файле CSV? - PullRequest
0 голосов
/ 24 марта 2019

Я новичок в MapReduce и MRjob, я пытаюсь прочитать CSV-файл, который я хочу обработать, используя MRjob в python.Но в нем около 5 столбцов со строками JSON (например, {}) или массивом строк JSON (например, [{}, {}]), некоторые из них являются вложенными.

Мой маппер до сих пор выглядитследующим образом:

from mrjob.job import MRJob
import csv
from io import StringIO

class MRWordCount(MRJob):
    def mapper(self, _, line):
        l = StringIO(line)
        reader = csv.reader(l) # returns a generator.

        for cols in reader:
            columns = cols

        yield None, columns

Я получаю ошибку -

_csv.Error: поле больше, чем предел поля (131072)

Но это кажетсяслучиться потому, что мой код разделяет строки JSON и на отдельные столбцы (из-за запятых внутри).

Как мне сделать это, чтобы строки JSON не разделялись?Может быть, я что-то пропускаю?

В качестве альтернативы, есть ли другие способы, с помощью которых я мог бы прочитать этот файл с помощью MRjob, которые сделали бы этот процесс проще или чище?

1 Ответ

1 голос
/ 24 марта 2019

Ваша строка JSON не окружена символами кавычек, поэтому каждая запятая в этом поле заставляет механизм csv думать, что это новый столбец.посмотрите здесь , что вы ищете: quotechar измените ваши данные так, чтобы ваш json был окружен специальным символом (по умолчанию ") и соответственно настройте ваш csv reader

...