У меня есть два варианта:
1) Использовать имя входного файла
Вместо того, чтобы пытаться управлять секционированием напрямую, добавьте имя входного файла в свой DataFrame и используйте его для любых операций группировки / агрегирования, которые вам нужно выполнить. Вероятно, это ваш лучший вариант, так как он больше соответствует целям параллельной обработки spark, когда вы говорите ему, что делать, и позволяете ему понять, как. Вы делаете это с помощью следующего кода:
SQL:
SELECT input_file_name() as fname FROM dataframe
Или Python:
from pyspark.sql.functions import input_file_name
newDf = df.withColumn("filename", input_file_name())
2) Распакуйте ваши CSV-файлы
Gzip не разделяемый формат сжатия. Это означает, что при загрузке сжатых файлов каждый файл будет иметь свой собственный раздел.