Я пишу утилиту искры python для чтения файлов и выполнения некоторых преобразований. Файл имеет большой объем данных (до 12 ГБ). Я использую sc.textFile для создания RDD, а логика - передавать каждую строку из RDD в функцию карты, которая в свою очередь разделяет строку на «,» и запускает некоторое преобразование данных (изменение значения полей на основе сопоставления).PySpark как читать файл с строкой с несколькими кодировками
Пример строки из файла. 0014164,02,031270,09,1,, 0,0,0000000000,134314, Мобильный, ce87862158eb0dff3023e16850f0417a-cs31,584e2cd63057b7ed, Privé, Сплетни
Благодаря ценностям "Privé" Я получаю UnicodeDecodeError. Я попытался следующие действия, чтобы разобрать это значение:
if isinstance(v[12],basestring):
v[12] = v[12].encode('utf8')
else:
v[12] = unicode(v[12]).encode('utf8')
, но когда я пишу данные обратно в файл это поле переводится как «Priv�». по типу исходного файла Linux отображается как «Текст ISO-8859 с очень длинными строками с терминаторами линии CRLF».
Может ли кто-нибудь сообщить мне правильный путь в Spark, чтобы читать/писать файлы со смешанным кодированием, пожалуйста.
Hi zero323, спасибо за быстрый ответ. Я попытался, но когда я пишу в файл, я вижу значение как «Priv�», – Harish
Кодировка может быть разной в вашем случае. 'Iso-8859-1' - просто пример. – zero323