我的文本文件有16列(user_id,date,other_attributes ......),整体文件大小为200GB,行数为1800万+。我创建了一个外部表(ex_raw_data)来读取这些数据。我有一个聚合脚本,可以生成200多个派生变量。当我在外部表(ex_raw_data)上运行查询时,由于我的文件是简单的文本文件,行数和计算变量很大,因此需要花费大量时间进行计算。现在我打算创建一个新的hive表,它将以ORC格式存储数据,但问题是如何在创建表时决定正确数量的存储桶。以下是我的集群配置(在AWS上)和ORC表结构:
Namenode: 32 cores,60 GB RAM, 180GB SSD
4 Data Nodes: 8 cores (on each data node), 30G RAM (on each data node),
Total HDFS size 1.5 TB SSD
create table raw_data_orc
(
user_id string,
date int,
attrib1 string,
attrib1 string,
attrib1 int,
.
.
.
)
CLUSTERED BY(user_id) INTO 32 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS ORC tblproperties ("orc.compress"="ZLIB");
INSERT OVERWRITE TABLE raw_data_orc select * from ex_raw_data;
决定ORC表中存储桶数量的最佳做法是什么(根据我上面的集群配置)? 感谢您的帮助!