pyspark: не удается правильно декодировать файл ISO-8859-1, используя s c .textFile - PullRequest
0 голосов
/ 19 апреля 2020

Мне нужно прочитать CSV-файл, который содержит "ISO-8859-1" , но при использовании s c .TextFile он не дает мне аргумента / возможность выбрать мой метод кодирования. Из-за этого некоторые мои строки поставляются с

Не используется read.csv (), потому что файл имеет двойной разделитель, поэтому мне нужно немного поработать, так как pyspark не принимает двойные разделители .

Используемый код:

df_x = (
    spark
    .createDataFrame(
        sc.textFile(path, use_unicode=True)
        .map(lambda line: line.replace("\t", ""))
        .map(lambda line: line.split("@|"))
        , schema = config["report"]["schema"]
        )
    )

токовый выход (португальский):

R. GERALDO RODRIGUES DA SILVA 112
RUA ANT�NIO GON�ALVES FILHO 91
Jos� Gon�alves Borges 391
SALDANHA MARINHO 522

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

R. GERALDO RODRIGUES DA SILVA 112
RUA ANTÔNIO GONÇALVES FILHO 91
José Gonçalves Borges 391
SALDANHA MARINHO 522

1 Ответ

0 голосов
/ 21 апреля 2020

Я нашел решение для кодировки. Основной проблемой были версии python, spark и scala (время выполнения блоков данных).

В соответствии с решением мы обновили блоки данных до python 3.7, spark 3.0 и scala 2.12 и написали следующий код?

dff = (
    spark 
    .read 
    .load(
        "path"
        , encoding = "ISO-8859-1"
        , format   = 'csv'
        , sep = '@|'
        , schema = "schema"))
...