Spark создает дополнительный столбец раздела в S3 - PullRequest
0 голосов
/ 24 апреля 2020

Я записываю фрейм данных в s3, как показано ниже. Целевое расположение: s3: // test / folder

   val targetDf = spark.read.schema(schema).parquet(targetLocation)
    val df1=spark.sql("select * from sourceDf")
    val df2=spark.sql(select * from targetDf)
/*    
for loop over a date range to dedup and write the data to s3
union dfs and run a dedup logic, have omitted dedup code and for loop
*/
    val df3=spark.sql("select * from df1 union all select * from df2")
    df3.write.partitionBy(data_id, schedule_dt).parquet("targetLocation")

Spark создает дополнительный столбец раздела при записи, как показано ниже:

Exception in thread "main" java.lang.AssertionError: assertion failed: Conflicting partition column names detected:

Partition column name list #0: data_id, schedule_dt
Partition column name list #1: data_id, schedule_dt, schedule_dt

Во время записи включен класс оптимизатора EMR. Использование искры 2.4.3 Пожалуйста, дайте мне знать, что может быть причиной этой ошибки.

Спасибо Abhineet

1 Ответ

0 голосов
/ 24 апреля 2020

Вы должны дать 1 дополнительный столбец кроме разделенных столбцов. Можете ли вы попробовать

val df3=df1.union(df2)

вместо

val df3=spark.sql("select data_id,schedule_dt from df1 union all select data_id,schedule_dt from df2")
...