我可以看到,在 SQL 中创建表时,我们可以使用 Partition By、Clustered 和 Distributed By 子句。
根据我的理解,分区会将相同键(我们在其上有分区)的数据存储在一起或更接近(可能在后台相同的结构化流中),这样当我们在连接、过滤器中使用该键时,我们的查询会更快。
集群是 - 我猜它将这些列的数据存储在一起或更靠近每个分区。
分布是哈希或循环之类的方法 - 在每个分区内存储数据的方式。如果您有整数列并且经常在某个范围内查询,请使用范围,否则使用散列。如果您的数据分布不均匀,那么您可能会面临数据倾斜问题,因此在这种情况下请使用循环法。
问题2:请问我的理解是否正确?
问题 1:有 INTO 子句 - 我想知道我们应该如何识别 DISTRIBUTION 的 INTO 子句的值?
问题3:还想知道哪一个是垂直分区,哪一个是水平分区?
问题 4:我没有看到任何好的在线文档来通过示例来学习这些概念。如果您知道请给我发链接。
Peter 和 Bob 为您提供了文档链接。
在这里快速回答您的问题:
分区和分布都根据分区方案对数据进行分区,并且都提供数据横向扩展和分区消除。
分区是可选的,并且可单独管理数据生命周期管理(除了使您能够消除分区),目前仅支持基于相同列值的基于值的分区。
然后,每个分区根据分配方案进一步分区。这里有不同的方案(HASH、RANGE 等)。系统根据一些启发式决定分配桶的数量。对于HASH分区,还可以使用INTO子句指定桶的数量。
然后,集群将指定分布桶中的行顺序,并允许您进一步提高查询性能(例如,您可以进行范围扫描而不是完整扫描)。
垂直和水平分区是有时用来分隔这两个分区级别的术语。我尽量避免使用它,因为记住哪个是哪个可能会令人困惑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)