На S3 хранятся 40-гигабайтные файлы tsv в формате gzip.
Я загружаю его с помощью
df = spark.read.csv()
и сохраните df
в HDFS с помощью
df.write.parquet()
Результирующий размер после этого составляет 20 ГБ.
Но если я вызову repartition
в DataFrame перед его сохранением, размер данных увеличится примерно в 10 раз.
df.repartition(num)
df.write.parquet()
Событие Я использую repartition
и даю аргумент, равный существующему количеству разделов, размер данных все равно сильно увеличивается.
Это делает операцию очень медленной.
Но мне нужен шаг repartition
, потому что sc.read.csv
не возвращает разумно разделенный DataFrame.
Кто-нибудь знает об этой проблеме?