AWS Redshift Parquet COPY имеет несовместимую схему паркета - PullRequest
0 голосов
/ 29 марта 2019

Я пишу DataFrame в Redshift, используя временную корзину s3 и Parquet в качестве временного формата.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"

...