项目场景:
在集群上写pyspark的时候遇到了这个问题
问题描述:
在进行df.show()操作的时候,由于数据中有中文,所以报错
Traceback (most recent call last):
File "20210622_1259_test.py", line 13, in <module>
df.show(100)
……
UnicodeEncodeError: 'ascii' codec can't encode characters in position 246-247: ordinal not in range(128)
原因分析:
网上搜了一下发现是python编码的问题,默认编码不支持中午,因此需要修改编码支持中文
解决方案:
方法一:
修改python编码为utf8就行了,添加如下代码:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
注意:这个方法好像只针对python2有用,python3之后移除了setdefaultencoding方法,这么用会报错。
方法二:
添加如下代码:
import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
这个方法在python3上可以使用