我正在尝试生成一组压缩的csv文件,可由集群上运行的spark脚本进行提取和处理。因此,我希望将数据拆分为多个部分,以便可以在集群的各个节点之间并行进行下游处理。当前,无论我设置了什么选项,hive都会为每个分区输出一个〜1GB的单个大文件。这极大地减慢了稍后执行spark操作的速度。如何设置它,使配置单元创建多个较小的文件,而不是单个较大的文件?
CREATE EXTERNAL TABLE IF NOT EXISTS model_sample (
<fields>
)
partitioned by (market string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION 's3://...';
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.compress.output=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set hive.merge.tezfiles=false;
set hive.merge.mapfiles=false;
set hive.merge.mapredfiles=false;
set mapred.max.split.size=68157440;
set mapred.min.split.size=68157440;
set hive.merge.smallfiles.avgsize=128000000;
insert overwrite table model_sample partition(market)(
select * from ...
);