python – PySpark – UnicodeEncodeError:’ascii’编解码器不能编码字符

前端之家收集整理的这篇文章主要介绍了python – PySpark – UnicodeEncodeError:’ascii’编解码器不能编码字符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用spark.read.csv将带有外来字符(åäö)的数据框加载到Spark中,并使用encoding =’utf-8’并尝试执行简单的show().

>>> df.show()

Traceback (most recent call last):
File "sql/dataframe.py",line 287,in show
print(self._jdf.showString(n,truncate))
UnicodeEncodeError: 'ascii' codec can't encode character u'\ufffd' in position 579: ordinal not in range(128)

我认为这可能与Python本身有关但我无法理解here for example中提到的任何技巧如何应用于PySpark和show() – 函数的上下文中.

最佳答案
https://issues.apache.org/jira/browse/SPARK-11772讨论了这个问题并提供了一个运行解决方案:

export PYTHONIOENCODING=utf8

在跑pyspark之前.我想知道为什么以上工作,因为即使没有它,sys.getdefaultencoding()也为我返回了utf-8.

How to set sys.stdout encoding in Python 3?还谈到了这一点,并为Python 3提供了以下解决方案:

import sys
sys.stdout = open(sys.stdout.fileno(),mode='w',encoding='utf8',buffering=1)

猜你在找的Python相关文章