我是 hive 新手,正在阅读有关 Bucketing 和 MapSide 连接的信息
“映射连接可以利用分桶表(Buckets),因为在左表的一个桶上工作的映射器只需要加载右表的相应桶来执行连接。连接的语法与for相同记忆中的……”
假设我创建一个表
CREATE TABLE bucketed_users (id INT, name STRING) CLUSTERED BY (id) INTO 4 BUCKETS;
我的问题是
1> 是否所有 4 个 Bucket 的大小都相同?还是取决于数据中 id 的频率?即,如果一个 id 重复很多,则相关存储桶的大小将高于其他存储桶。
2> 是否会出现与 id 相关的数据将出现在 2 个不同的存储桶中的情况?即一个 id 的记录存在于存储桶 1 中,而另一条记录存在于存储桶 4 中。
如果是,那么优化器将如何处理分桶数据?
如果有人尝试过,如果他们能分享他们的经验,那就太好了。