PySpark DF和RDD拉丁字母编码

2024-10-01 02:37:12 发布

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

我必须导入Spark中的CSV文件,并在DF中进行转换,然后在RDD中进行处理。在

首先,我将完整的CSV文件导入为DF

stopwords_df = (
    sqlc
    .read
    .format('csv')
    .option('header', True)
    .option('delimiter', ';')
    .option('encoding', 'latin1')
    .load('/mnt/sparkdata/stopwords.csv', schema = stopSchema)
    .repartition(72)
)

然后我只选择合适的单词并将其转换成集合

^{pr2}$

我把编码搞砸了,我不知道怎么解决这个问题。在

如果我“显示”这个DF,拉丁字母将正确显示(sperò)

stopwords_df.show(100, truncate = False)

+--------------+--------+------+----------+------+
|word          |language|type  |doubletype|retain|
+--------------+--------+------+----------+------+
|informava     |IT      |verbo |null      |null  |
|sperò         |IT      |verbo |null      |null  |
|four          |EN      |null  |null      |null  |

但如果我出示RDD就不会这样了

(
    stopwords_df
    .filter(f.col('word') == r'sperò')
    .rdd
    .first()
)

Row(word=u'sper\xf2', language=u'IT', type=u'verbo', doubletype=None, retain=None)

有了UTF-8 encoding它也会变得更糟

+--------------+--------+------+----------+------+
|word          |language|type  |doubletype|retain|
+--------------+--------+------+----------+------+
|thanks        |EN      |saluto|null      |null  |
|fossero       |IT      |verbo |null      |null  |
|sper�         |IT      |verbo |null      |null  |

你能告诉我怎么修这个吗?在


Tags: 文件csvdftypeitlanguagenullword
1条回答
网友
1楼 · 发布于 2024-10-01 02:37:12

看到这一行后:

Row(word=u'sper\xf2)

这意味着您使用的是python3。python3的默认编码是utf-8,默认情况下它支持ò。在

因此,当它被指定为“2”时,它被替换为“2”。在

为什么你不收集没有编码的拉丁1?在

^{pr2}$

如果有帮助,请告诉我。 谢谢您。在

相关问题 更多 >