我正在尝试在我的星型架构中使用桶地图连接进行查询。 我有一些小尺寸表和一个大事实表。 我会:
但是,如果我尝试在没有任何分区的情况下对表进行存储,则在插入数据( num_files:1 )之后,我只能在表文件夹中看到1个文件。
CREATE TABLE user_dimension (
id STRING,
...
name STRING)
CLUSTERED BY (id) INTO 24 BUCKETS;
>> OK
INSERT INTO TABLE user_dimension
SELECT id, name
FROM datasource;
>> Table user_dimension stats: [num_partitions: 0, num_files: 1, num_rows: 478, total_size: 36497, raw_data_size: 36019]
答案 0 :(得分:2)
在分组数据时,请务必设置
hive.enforce.bucketing=true;
插入数据之前。
(如果维度表非常小,您可以直接使用常规地图连接,而无需进行分段。当您需要连接2个大型表时,Bucketing是合适的。)
答案 1 :(得分:0)
即使没有在Hive表上进行分区,也可以进行暂停。
CREATE TABLE bucketed_table(
firstname VARCHAR(64),
lastname VARCHAR(64),
address STRING,
city VARCHAR(64),
state VARCHAR(64),
web STRING
)
CLUSTERED BY (state)
SORTED BY (city)
INTO 32 BUCKETS STORED AS SEQUENCEFILE;