在cassandra的每个作业运行中查找大约4万条记录,其中1.5亿条记录?

mbzjlibv  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(243)

我正在构建一个以cassandra作为查找存储的近实时/微批量数据应用程序。每次增量运行大约有4万条记录,而cassandra表大约有1.5亿条记录。在每次运行中,我需要查找id字段并从cassandra获得一些属性。这些查找可能是随机的(不是任何时间/地区/国家的依赖关系),因此没有明确的分区方案。
我应该如何划分cassandra表以确保良好的性能(对于每15-30分钟运行一次的微博客)?
除了分区之外,还有什么建议吗?

umuewwlo

umuewwlo1#

joinWithCassandraTable 以及 leftJoinWithCassandraTable 函数是专门为cassandra中spark jobs的高效数据查找而设计的。它通过主键或分区键执行数据的获取,由于它是由多个执行器并行执行的,所以速度可能很快(虽然~40k可能仍然需要时间,但这取决于cassandra和spark集群的大小)。有关如何使用它的详细信息,请参阅scc文档—但是请记住,这些函数仅在RDDAPI中可用。datastax版本的connector支持所谓的“directjoin”,即在dataframeapi中与cassandra的高效连接。
关于分区-这取决于您如何执行查找-您在cassandra中有一个记录与spark中的一个记录匹配?如果是,那么就使用这个id作为主键(在这种情况下它等于分区键)。

相关问题