У меня есть программа Spark, которая считывает данные из текстового файла как RDD и преобразует их в файл Parquet с помощью spark-sql и разделяет их с помощью одного ключа раздела. Время от времени вместо создания одного раздела он создает два раздела, которые являются разделом внутри раздела.
Мои данные разделены по дате, а выходная папка находится в s3: // datalake / intk / parquetdata.
После запуска задания Spark я получаю следующий результат:
s3://datalake/intk/parquetdata/datekey=102018/a.parquet
s3://datalake/intk/parquetdata/datekey=102118/a.parquet
s3://datalake/intk/parquetdata/datekey=102218/datekey=102218/a.parquet
Фрагмент кода:
val savepath = "s3://datalake/intk/parquetdata/"
val writeDF = InputDF.write
.mode(savemode)
.partitionBy(partitionKey)
.parquet(savePath)
Я выполняю задание Spark в кластере EMR версии 5.16, Spark версии 2.2, Scala версии 2.11, а расположение вывода - s3. Я не уверен, почему это происходит, и я не вижу, чтобы эта проблема соответствовала какому-либо шаблону, и этот раздел возникает только время от времени.
Извините, я отредактировал сообщение сейчас, мой путь для сохранения - "s3: // data lake / into / parquet data", я не указываю какой-либо ключ даты в моем пути для сохранения
Похоже, вы используете
s3://datalake/intk/parquetdata/datekey=102218/
какsavePath
, сохраняя при этом.partitionBy
. Если вы хотите записать в конкретный раздел напрямую, опустите столбец раздела и опустите.partitionBy