【发布时间】:2020-08-01 23:57:32
【问题描述】:
我需要读取一个带有 "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
【问题讨论】:
-
Spark 不支持它:issues.apache.org/jira/browse/SPARK-1849 - 你可以尝试使用 Hadoop API 来代替
-
之后没有编码/解码的方法吗?或者一个函数来替换这个错误解码的字符?例如,另一个 .map 函数?我试过 但这只会删除字符,不会替换或修复
标签: python encoding pyspark databricks iso-8859-1