В моем задании Spark я пишу сжатый файл паркета следующим образом:
df
.repartition(numberOutputFiles)
.write
.option("compression","gzip")
.mode(saveMode)
.parquet(avroPath)
Тогда мои файлы имеют это расширение: имя_файла .gz.parquet
Как я могу получить ".parquet.gz"?
Это что-то вроде "/my/path/partition_id=xxxxx"
Я не верю, что ты можешь. Расширение файла жестко закодировано в ParquetWrite.scala как конкатенация расширения кодека и ".parquet" в следующем порядке:
:
override def getFileExtension(context: TaskAttemptContext): String = {
CodecConfig.from(context).getCodec.getExtension + ".parquet"
}
:
Итак, если вы не хотите изменить исходный код и скомпилировать свою собственную версию Spark или открыть запрос JIRA к Spark... ;))
Можете ли вы показать нам, какое значение имеет
avroPath
? В моем случае (в Spark 2.4.5 с использованиемspark-shell
), когда я использую ту же команду, что и вы, я просто получаю точное имя файла, которое указываю. Поэтому, если у меня естьorangeJuice
вместо вашегоavroPath
, я получуorangeJuice
в качестве имени файла. Если я выберуorangeJuice.parquet.gz
, я получу это имя файла.