我试图通过执行看起来像“插入到table_a(从table_b中选择*,to_date(created_at))”的SQL,使用spark将数据插入分区的蜂巢表中。
两个表均为Json格式,源数据为GZIPped,大小为1.2GB。但是由于spark不写入压缩文件,因此输出表的数据大小已变为34GB。
我已经尝试了以下配置,但似乎没有任何作用
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倍。任何帮助将不胜感激。