我正在加入两个表,在一个服务器中配置有64 CPU核和512 1B内存的SnappyData中的大量行(目前为100 m1B),并希望利用同位连接。然而,文档中的描述似乎意味着并置连接发生在每个节点级别。
实际上,我需要的是类似于每桶级配置连接(或分区-连接)的东西,而且我没有充分利用服务器,因为CPU的总利用率在大多数情况下大约是10%或更少。
对于join,我使用Rowstore和SQL语句。我使用单节点安装脚本(snappy-start-all.sh)设置SnappyData,其中包含一个引线、一个服务器和一个定位器,并进行了一些定制,以使用更多的mem和CPU核心:
conf/引线
localhost -locators=localhost:9999 -heap-size=200g -spark.executor.cores=30 -dir=/snappydata/lead1conf/服务器
localhost -locators=localhost:9999 -heap-size=200g -spark.executor.cores=30 -dir=/snappydata/server1conf/定位器
localhost -peer-discovery-port=9999 -heap-size=2048m -dir=/snappydata/locator1我想不出如何解决这个问题,我的问题是:
对于上述任何问题的任何信息或提示(很抱歉在一个帖子中问了很多问题),我们将不胜感激:)
更新:
两行表的架构如下(列都是Integer类型):
Table_A(key1, key2, value1, value2, value3)
USING ROW OPTIONS (partition_by 'key1, key2')
Table_B(key1, key2, value4, value5)
USING ROW OPTIONS (partition_by 'key1, key2', colocate_with 'Table_A').连接结果将包含: Table_C(key1、key2、value1、value2、value3、value4、value5)
key1值可为200不同值,key2 ~2M值为不同值。而且(key1,key2)分布是倾斜的,并不是唯一的--少数(<5%)相当频繁,而大多数不是。
发布于 2017-04-18 18:42:50
只支持涉及两个或多个分区行表(有或没有附加的复制表)的查询,前提是它们同时满足这两种条件:
这些条件允许SnappyData将连接查询分发到所有承载数据的服务器。查询在每个本地数据存储上并行执行,而不必将表数据从一个成员移动到另一个成员以执行连接。连接在每个数据存储的本地数据集上执行,主查询成员聚合来自每个数据存储的结果以获得结果集。
发布于 2017-04-18 18:54:40
每个节点级别都会出现并置连接。
这取决于您的联接查询。
设置多个服务器应该有助于更好地利用资源。
您可以从这个指针- 管理/分区-约.开始,您也可以根据数据的性质根据范围、列表或表达式对数据进行分区。通过这些示例了解如何实现这个目标- guide/topics/create-partition-tables/PartitioningExamples.html
https://stackoverflow.com/questions/43478545
复制相似问题