使用分区键的snappydata表定义

8xiog9wr  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(346)

阅读文档(http://snappydatainc.github.io/snappydata/streamingwithsql/)对这个项目有个问题:
“通过共分区减少洗牌:使用snappydata,输入队列(例如,对于kafka源)、流处理器和底层存储所使用的分区键可以是相同的。这大大减少了洗牌记录的需要。”
如果我们使用kafka并使用一个键(单个值)在主题中划分数据。是否可以将kafka中的单个键Map到snappy表中标识的多个分区键?
有没有一种散列方法可以将多个密钥转换为一个密钥?
减少洗牌的好处似乎很重要,并试图理解这里的最佳实践。
谢谢!

w3nuxt5m

w3nuxt5m1#

使用directkafka流,每个分区从自己指定的主题提取数据。如果没有为存储表指定分区,那么每个directkafka分区将只放在本地存储桶中,然后所有内容都将很好地排列起来,而不需要任何额外的东西。唯一需要注意的是足够多的主题(因此是分区)以获得更好的并发性——理想情况下至少与集群中处理器内核的总数相同,这样所有内核都很忙。
当显式分区存储表时,snappydata的存储被调整为使用与spark的hashpartitioning相同的散列(对于列表和行表的“partition\u by”选项),因为这是catalystsql执行层使用的散列。所以执行和存储总是并置的。但是,将其与来自directkafka分区的摄取相协调将需要一些手动工作(将kafka主题分区与hashpartitioning相协调,然后使每个directkafka分区的首选位置与存储相匹配)。将在即将发布的版本中简化。

相关问题