【发布时间】:2017-02-01 09:49:26
【问题描述】:
使用 spark.read.csv 和 encoding='utf-8' 将带有外来字符 (åäö) 的数据帧加载到 Spark 中,并尝试执行简单的 show()。
>>> df.show()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/spark/python/pyspark/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() 函数的上下文中。
【问题讨论】:
-
你是不是只有在使用
show时才会遇到这种情况? -
@zero323 我可以尝试其他与打印相关的命令吗?
-
如果
df.rdd.map(lambda x: x).count()成功,初学者可以试试。 -
@zero323 – 是的,我什至成功运行了一些 Spark SQL 查询——只有这个 show() 函数在字符串中的字符编码上失败了。
-
所以
rdd.take(20)例如执行没有问题?如果是这样,问题可能是标题。您是否可以通过一种或另一种方式提供可用于重现问题的最小数据样本?
标签: python python-2.7 apache-spark pyspark