阅读文档(http://snappydatainc.github.io/snappydata/streamingWithSQL/),并对此项目有一个问题:
通过协同分区减少混洗:使用SnappyData,输入队列(例如,用于Kafka源)、流处理器和底层存储使用的分区键都可以是相同的。这大大减少了混洗记录的需要。
如果我们使用Kafka,并使用键(单个值)对主题中的数据进行分区。是否可以将kafka中的单个键映射到snappy表中标识的多个分区键?
是否有某种散列可以将多个键转换为单个键?
减少混洗的好处似乎很明显,并试图理解这里的最佳实践。
谢谢!
发布于 2016-08-26 23:32:36
使用DirectKafka流,每个分区从自己指定的主题中提取数据。如果没有为存储表指定分区,那么每个DirectKafka分区将只放入本地存储桶中,然后一切都会很好地排列在一起,而不需要任何额外的东西。唯一需要注意的是有足够数量的主题(即分区),以便获得更好的并发性--理想情况下,至少与集群中处理器核心的总数一样多,这样所有核心都会处于繁忙状态。
当显式分区存储表时,SnappyData的存储已经调整为使用与Spark的HashPartitioning相同的散列(对于列和行表的"PARTITION_BY“选项),因为这是在Catalyst SQL执行层使用的。因此,执行和存储始终是并置的。然而,将其与来自DirectKafka分区的摄取对齐将需要一些手动工作(将kafka主题分区与HashPartitioning对齐,然后使每个DirectKafka分区的首选位置与存储相匹配)。将在即将发布的版本中得到简化。
https://stackoverflow.com/questions/39154873
复制相似问题