UnicodeEncodeError:“ ascii”编解码器无法编码字符错误

时间:2019-07-26 14:35:04

标签: python csv apache-spark unicode pyspark

我正在使用python从Google云存储中读取一些文件

spark = SparkSession.builder.appName('aggs').getOrCreate()

df = spark.read.option("sep","\t").option("encoding", "UTF-8").csv('gs://path/', inferSchema=True, header=True,encoding='utf-8')
df.count()
df.show(10)

但是,我不断收到错误消息,抱怨df.show(10)行:

df.show(10)
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/dataframe.py", line 
350, in show
UnicodeEncodeError: 'ascii' codec can't encode character u'\ufffd' in position 162: ordinal not in range(128)

我搜索了一下,发现这似乎是一个常见错误,应该像我已经做的那样,将解决方案添加到"UTF-8"的编码中。由于这无济于事,我仍然遇到此错误,专家可以帮忙吗?预先感谢。

1 个答案:

答案 0 :(得分:3)

在运行Spark作业之前如何导出PYTHONIOENCODING

export PYTHONIOENCODING=utf8

对于 Python 3.7 + ,以下方法也可以解决问题:

sys.stdout.reconfigure(encoding='utf-8')

对于 Python 2.x ,您可以使用以下代码:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')