1

我有 16 列的文本文件(user_id、date、other_attributes ......),整体文件的大小为 200GB,行数为 18 亿+。我创建了一个外部表(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 表中存储桶数量的最佳实践是什么(根据我上面的集群配置)?感谢你的帮助!

4

0 回答 0