Как использовать сжатие GZIP при записи во внешнюю таблицу с помощью Spark - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь вставить данные в многораздельные таблицы кустов, используя spark, выполняя SQL, который выглядит как «Вставить в таблицу_a (выберите *, to_date (создал_кат) из таблицы_b)».

Обе таблицы находятся вФормат Json и исходные данные в формате GZIPped и размером 1,2 ГБ.Но размер выходной таблицы стал 34 ГБ, поскольку spark не записывает сжатые файлы.

Я уже пробовал следующую конфигурацию, и, похоже, ничего не работает

sparkSession = (SparkSession
                .builder
                .appName('example-pyspark-read-and-write-from-hive')
                .enableHiveSupport()
                .config("hive.exec.dynamic.partition", "true")
                .config("hive.exec.dynamic.partition.mode", "nonstrict")
                .config("spark.hadoop.mapred.output.compress", "true")
                .config("spark.hadoop.mapred.output.compression.codec", "org.apache.hadoop.io.compress.GzipCodec")
                .config("spark.hadoop.mapred.output.compression.type", "BLOCK")
                .config("spark.sql.json.compression.codec","gzip")
                .getOrCreate())
sparkSession.sql("set json.compression=GZIP")
sparkSession.sql("set spark.sql.json.compression.codec=GZIP")
df_load = sparkSession.sql("insert into temp.serv_test_out (select *,to_date(from_utc_timestamp(from_unixtime(time_stamp DIV 1000), 'IST')), lpad(hour(from_utc_timestamp(from_unixtime(time_stamp DIV 1000), 'IST')),2,'0') from temp.serv_test)")
df_load.show()

Исходные данные, которые у меня есть,и не хочу, чтобы размер моей секционированной таблицы был в 30 раз больше.Любая помощь будет оценена.

...