【问题标题】:Working with non-english characters in columns of spark scala dataframes在 spark scala 数据帧的列中使用非英语字符
【发布时间】:2021-09-16 20:55:12
【问题描述】:

这是我试图加载到数据框中的文件的一部分:

字母|句子|评论1

è|小e|无

Ü|大写U|无

ã|小a|

Ç|大写C|无

当我将此文件加载到数据框中时,所有非英文字符都会转换为框。试过给option("encoding","UTF-8"),但是没有任何变化。

val nonEnglishDF = spark.read.format("com.databricks.spark.csv").option("delimiter","|").option("header",true).option("encoding","UTF-8").load(hdfs file path)

请告诉我是否有任何解决方案。我最终需要保存文件,非英文字符没有变化。目前保存文件时,它会放置方框或问号,而不是非英文字符。

【问题讨论】:

    标签: scala dataframe apache-spark encoding utf-8


    【解决方案1】:

    在该列上使用decode 函数:

    decode(col("column_name"), "US-ASCII")
    
    //It should work with one of these ('US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16')
    

    【讨论】:

    • 嗨,Jay... 实际上我已经找到了解决方案。它适用于 ISO-8859-1 编码。不适用于 UTF-16(BE、LE 或plain)(将其转换为中文字符)。没有尝试 US-ASCII。感谢回复
    • 每当我遇到这种情况时,我都会遍历它们,直到找到一个可行的方法。很高兴听到你能弄明白。
    • 如果 csv 文件中有瑞典语字符,使用什么字符集
    • 我想说 UTF-8 应该能够读取这些内容。
    【解决方案2】:

    它适用于选项(“编码”,“ISO-8859-1”)。例如

    val nonEnglishDF = spark.read.format("com.databricks.spark.csv").option("delimiter","|").option("header",true).option("encoding","ISO-8859-1").load(hdfs file path)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-02
      • 2017-09-16
      • 1970-01-01
      • 2019-05-10
      • 2018-10-12
      • 2018-07-16
      • 2023-04-07
      • 2017-05-27
      相关资源
      最近更新 更多