AWS Redshift Parquet COPY具有不兼容的Parquet模式

时间:2019-03-29 12:38:47

标签: scala apache-spark amazon-redshift amazon-emr parquet

我正在使用临时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"

上显示以下内容

0 个答案:

没有答案