Я пытаюсь вставить данные в многораздельные таблицы кустов, используя 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 раз больше.Любая помощь будет оценена.