我正在使用临时s3存储桶和Parquet作为临时格式将DataFrame写入Redshift。 Spark已成功将数据写入s3临时存储区,但Redshift尝试将数据复制到仓库失败,并显示以下错误:
error: S3 Query Exception (Fetch)
code: 15001
context: Task failed due to an internal error. File 'https://s3.amazonaws.com/...../part-00001-de882e65-a5fa-4e52-95fd-7340f40dea82-c000.parquet has an incompatible Parquet schema for column 's3://bucket-dev-e
query: 17567
location: dory_util.cpp:872
process: query0_127_17567 [pid=13630]
我在做什么错以及如何解决?
已更新1
这是详细的错误:
S3 Query Exception (Fetch). Task failed due to an internal error.
File 'https://....d5e6c7a/part-00000-9ca1b72b-c5f5-4d8e-93ce-436cd9c3a7f1-c000.parquet has an incompatible Parquet schema for column 's3://.....a-45f6-bd9c-d3d70d5e6c7a/manifest.json.patient_dob'.
Column type: TIMESTAMP, Parquet schema:\noptional byte_array patient_dob [i:26 d:1 r:0]\n (s3://.......-45f6-bd9c-d3d70d5e6c7a/
Apache Spark版本2.3.1
也尝试设置以下属性,但是没有运气:
writer
.option("compression", "none")
.option("spark.sql.parquet.int96TimestampConversion", "true")
.option("spark.sql.parquet.int96AsTimestamp", "true")
.option("spark.sql.parquet.writeLegacyFormat", "true")
问题可能出在哪里?
更新2
数据框patient_dob
的列类型为DateType
Redshift patient_dob
字段类型为date
S3选择在patient_dob
镶木地板字段-"patient_dob": "1960-05-28"