【问题标题】:Unicode issue with csv and PySparkcsv 和 PySpark 的 Unicode 问题
【发布时间】:2021-06-16 19:42:46
【问题描述】:

我有一个带有 unicode 字符的 PySpark 数据框,如下所示:

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame([{"a": 0, "b": 1, "c": "somestring\u0001bla"}])

导致:

我想通过读取或写入新的 csv 文件来消除这种情况。我尝试了不同的选择:

option("encoding", "UTF-8")
option("nullValue", "\u0001")
option("encoding", "ISO-8859-1")

并使用各种编码选项进行阅读,但没有任何效果。有什么建议吗?

【问题讨论】:

  • 怎么了?你期待什么?
  • @JosefZ 问题开始时,经过额外的操作和计算,我尝试将其保存到 json/parquet 并将其导入数据库。在这种情况下,由于数据库无法读取这些 Unicode 字符,因此摄取失败。在我的用例中,最简单的解决方案是在读取初始 .csv 文件时消除那些 unicode 字符(例如,将它们转换为空白值)。

标签: python csv pyspark unicode encoding


【解决方案1】:

这是消除这些字符的代码,

df = spark.createDataFrame([{"a": 0, "b": 1, "c": "somestring\u0001bla"}])
df.show()

在此处粘贴为文本时无法显示该特殊字符。附加为图片。“https://i.stack.imgur.com/21Nh0.png”

|  a|  b|             c|
+---+---+--------------+
|  0|  1|somestringbla|
+---+---+--------------+
df.createOrReplaceTempView("data")
spark.sql("select regexp_replace(c,'\u0001','' ) from data").show()
+----------------------+
|regexp_replace(c, , )|
+----------------------+
|         somestringbla|
+----------------------+


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2010-09-26
    • 2010-09-25
    相关资源
    最近更新 更多