无法修剪pyspark数据帧中的空白

无法修剪pyspark数据帧中的空白,pyspark,data-cleaning,pyspark-dataframes,data-ingestion,Pyspark,Data Cleaning,Pyspark Dataframes,Data Ingestion,从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: inva

从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
所以,试图修剪数据帧中的列,但这不起作用。修剪前后的数据相同

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

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

可能微调工作正常。
trim
函数只是从流的两端删除空格。事实上,你的问题并不是这样。问题是Postgres不接受空字符(即
0x00
,),而且您的
col2
中似乎有一些空字符。尝试先用类似以下的方法清洁这些部件:

从pyspark.sql.functions导入regexp\u replace,col
data=data.withColumn(“col2”,regexp\u replace(col(“col2”),“\u0000”,”)

它成功了。我使用了dataframe.replace..不确定它为什么不起作用。需要检查它的功能。也许你可以接受这个答案吗?:)已经接受了。但我无法得到的是,该错误所对应的列值不为null。它只是在结尾有一些空白。你知道吗?