pyspark:无法使用sc.textFile正确解码ISO88591文件

2024-05-12 13:16:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要读取一个编码为“ISO-8859-1”的csv文件,但当使用sc.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

Tags: 文件csvlambdamapschemalinesilvada
1条回答
网友
1楼 · 发布于 2024-05-12 13:16:45

我已经找到了编码的解决方案。主要问题是python、spark和scala版本(databricks运行时)

根据解决方案,我们将databricks更新为Python3.7、spark 3.0和scala 2.12,并编写了以下代码

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

相关问题 更多 >