Вы можете сжать файл, используя option("codec","org.apache.hadoop.io.compress.snappyCodec")
. Есть много доступных кодеков, которые предлагают различный уровень сжатия, например org.apache.hadoop.io.compress.GzipCodec
.
Это не будет иметь никакого эффекта, если файл сохранен в формате .txt, но работает потрясающе, если вы используете формат csv
, parquet
или Avro
. И паркет, и формат Avro можно разделить в сжатом состоянии, поэтому перед обработкой не нужно распаковывать вручную, спарк автоматически распакует.
Код для чтения текста и сохранения в виде паркета -
val df = spark.read.text("path to text file")
df.write.option("codec","org.apache.hadoop.io.compress.snappyCodec").parquet("destination path")
//read the file back
spark.read.parquet("path to compressed file").show()
Код читать CSV и сохранить как csv.gz.
val df = spark.read.csv("path to test.csv")
df.write.option("codec","org.apache.hadoop.io.compress.GzipCodec").csv("path to test2.gzip")