了解我的 SnappyData 表的存储桶数?
Posted
技术标签:
【中文标题】了解我的 SnappyData 表的存储桶数?【英文标题】:Understanding the # of buckets for my SnappyData table? 【发布时间】:2016-08-25 05:48:53 【问题描述】:默认的桶数是 113。为什么?为什么不是110?桶逻辑在某个“可除数”值下是否表现更好。
SnappyData 中有很多桶较少的示例。这是为什么?确定使用比默认 113 更少的存储桶的逻辑是什么?
选择更少有什么影响?更多的桶呢?我看到很多日志记录在我的 Spark SQL 查询中,在每个存储桶中查找数据。拥有更多存储桶对查询的性能是否更差?
【问题讨论】:
【参考方案1】:按照这些指南计算分区表的桶总数:
使用质数。我们在内部使用散列函数,这提供了最均匀的分布。查看此帖子了解更多详情:Why use a prime number in hashCode?
使其至少是数据存储数量的四倍 你期望有桌子。桶的比例越大 数据存储,负载可以更均匀地分布在成员之间。
但请注意,负载平衡和开销之间存在权衡。管理存储桶会带来大量开销,尤其是在冗余级别较高的情况下。
【讨论】:
你能解释一下你所说的“数据存储数量”是什么意思吗?当我定义表 DDL 时,您指的是 SnappyData Store 服务器总数还是 REDUNDANCY 属性? 是的,它表示已配置的服务器总数(或将来扩展集群时预计配置的服务器)。【参考方案2】:我们选择了一个在基于散列的分区逻辑中分配数据最有效的素数。桶的数量会对查询性能产生一定的影响。当存储桶被转换为 Spark 任务时,会有更多存储桶数量的任务调度开销。
但是,如果您的集群在 cpu 数量方面具有更大的容量,您当然应该尝试将存储桶的数量与接近的素数相匹配。
【讨论】:
以上是关于了解我的 SnappyData 表的存储桶数?的主要内容,如果未能解决你的问题,请参考以下文章
Snappydata 存储与来自现有 spark 安装的 hive 元存储
如何使用 sql 查询以行存储模式在 snappydata 表中加载 JSON 数据?
SnappyData 上的 Theta Sketch (Yahoo)
Spark 组件在 SnappyData 统一集群模式下位于何处?