我正在使用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"
的编码中。由于这无济于事,我仍然遇到此错误,专家可以帮忙吗?预先感谢。
答案 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')