Следующие решения используют pyspark, но я предполагаю, что код в Scala будет аналогичным.
Первый вариант, чтобы установить следующее, когда вы инициализирует свой SparkConf:
conf = SparkConf()
conf.set("spark.hadoop.mapred.output.compress", "true")
conf.set("spark.hadoop.mapred.output.compression.codec", "org.apache.hadoop.io.compress.GzipCodec")
conf.set("spark.hadoop.mapred.output.compression.type", "BLOCK")
С выше любого файла вы производите с помощью этого sparkContext автоматически сжимаются с помощью GZIP кода.
Второй вариант, если вы хотите сжать только выбранные файлы в вашем контексте. Допустим, «ДФ» Ваш dataframe и имя файла вашего назначения:
df_rdd = self.df.toJSON()
df_rdd.saveAsTextFile(filename,compressionCodecClass="org.apache.hadoop.io.compress.GzipCodec")
Вы обнаружили способ сжать выход json? Я также ищу решение. –
Я еще не нашел способ сделать это. – Sim