0

通读文档(http://snappydatainc.github.io/snappydata/streamingWithSQL/)并对此项目有疑问:

“通过共同分区减少混洗:使用 SnappyData,输入队列(例如,用于 Kafka 源)、流处理器和底层存储使用的分区键都可以相同。这大大减少了混洗记录的需要。”

如果我们使用 Kafka 并使用键(单个值)将我们的数据分区到一个主题中。是否可以将这个单个键从 kafka 映射到 snappy 表中标识的多个分区键?

是否有某种散列可以将多个键变成一个键?

减少洗牌的好处似乎很重要,并试图在这里了解最佳实践。

谢谢!

4

1 回答 1

0

使用 DirectKafka 流,每个分区从自己指定的主题中提取数据。如果没有为存储表指定分区,那么每个 DirectKafka 分区将只放入本地存储桶,然后一切都会排列好,不需要任何额外的东西。唯一需要注意的是足够数量的主题(因此是分区)以实现更好的并发性——理想情况下至少与集群中处理器内核的总数一样多,因此所有内核都处于忙碌状态。

当显式分区存储表时,SnappyData 的存储已调整为使用与 Spark 的HashPartitioning相同的散列(用于列表和行表的“PARTITION_BY”选项),因为这是在 Catalyst SQL 执行层使用的散列。所以执行和存储总是并置的。但是,将其与 DirectKafka 分区的摄取对齐将需要一些手动工作(将 kafka 主题分区与 HashPartitioning 对齐,然后让每个 DirectKafka 分区的首选位置与存储匹配)。将在即将发布的版本中进行简化。

于 2016-08-26T15:32:35.737 回答