使用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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。