gpt4 book ai didi

python - 拉丁字母的 PySpark DF 和 RDD 编码

转载 作者:行者123 更新时间:2023-11-28 19:02:27 28 4
gpt4 key购买 nike

我必须在 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)
)

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

stopwords_set = set(
stopwords_df
.filter(f.col('retain').isNull())
.rdd
.map(lambda x: x[0].encode('latin1')) # the [0] is to extract strings from Rows
.collect()
)

我搞砸了编码,我不知道如何解决这个问题。

如果我“显示”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 编码也会变得更糟

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

你能建议我如何解决这个问题吗?

最佳答案

看到这一行后:

Row(word=u'sper\xf2)

它确实暗示您正在使用 Python 3。Python 3 的默认编码是 utf-8,它默认支持 ò。

因此,当您指定将其编码为 latin1 时,ò 将替换为\xf2。

为什么不收集没有编码为 latin1 的数据?

stopwords_set = set(
stopwords_df
.filter(f.col('retain').isNull())
.rdd
.collect()
)

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

关于python - 拉丁字母的 PySpark DF 和 RDD 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51151850/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com