【问题标题】:Unable to trim empty space in pyspark dataframe无法修剪 pyspark 数据框中的空白空间
【发布时间】:2021-03-06 16:53:56
【问题描述】:

从 Oracle 加载数据并写入 PostgreSQL 时遇到奇怪的问题。无法将带空格的字符串写入 postgres。面临以下问题

Caused by: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO xyz("col1","col2") VALUES ('7643'::numeric,'xyz/xyz xyzxy xyz/xyz xyzxy ') was aborted: ERROR: invalid byte sequence for encoding "UTF8": 0x00  Call getNextException to see other errors in the batch

因此尝试修剪数据框中的 col 但这不起作用。修剪前后的数据是一样的。

data= data.withColumn("trimmed", trim(col("col2")))

我对 pyspark 和数据清理非常陌生,非常感谢任何帮助。

【问题讨论】:

    标签: pyspark data-cleaning pyspark-dataframes data-ingestion


    【解决方案1】:

    可能修剪工作正常。 trim 函数只是从流的两端删除空格。而实际上你的问题不是这样的。问题是 Postgres 不接受 NULL 字符(即0x00check this),看起来你的col2 中有一些字符。尝试先用以下方法清洁它们:

    from pyspark.sql.functions import regexp_replace, col
    data = data.withColumn("col2", regexp_replace(col("col2"), "\u0000", ""))
    

    【讨论】:

    • 成功了。我用过dataframe.replace..不知道为什么它不起作用。需要检查它的作用。
    • 也许你可以接受这个答案? :)
    • 已被接受。但我无法得到的是这个错误即将到来的列值不是空的。它只是在最后有一些空白空间。有什么想法吗?
    猜你喜欢
    • 2017-12-15
    • 2020-07-14
    • 2018-08-26
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2021-08-15
    • 2010-11-14
    相关资源
    最近更新 更多