首页 > 解决方案 > 无法在 Spark Dataframe 中包含 UTF-8 字符作为列的值

问题描述

我正在尝试将“ID”和“符号”的键值对列表转换为两列 [“id”、“值”] 的数据框。示例列表如下所示,有 4 个值。(Spark 会话是定义为“火花”)

L=[(1,"@"),(2,"#"),(3,"$"),(4,"£")]
df=spark.sparkContext.parallelize(L).toDF(["ID","VALUE"])
df.show()

但在这里它抛出错误

"UnicodeEncodeError: 'ascii' codec can not encode characters in position 66-67:ordinal not in range(128)

我知道它正在发生,因为 £ 不是 ascii 字符。我尝试将 list 中的字符转换为 utf-8 / unicode ,但仍然出现上述错误。

这里可能的解决方案是什么。

标签: pythonapache-sparkpyspark

解决方案


试试这个:你只是没有将列值作为列表传递

L=[(1,"@"),(2,"#"),(3,"$"),(4,"£")]
df = sc.parallelize(L).toDF(["ID","value"]).show()
+---+-----+
| ID|value|
+---+-----+
|  1|    @|
|  2|    #|
|  3|    $|
|  4|    £|
+---+-----+

这是屏幕截图

在此处输入图像描述


推荐阅读