首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >joinWithCassandraTable在增加表大小方面速度慢得多

joinWithCassandraTable在增加表大小方面速度慢得多
EN

Stack Overflow用户
提问于 2015-08-27 13:08:17
回答 1查看 892关注 0票数 4

我目前正在使用这个堆栈:

  • Cassandra 2.2 (多项式)
  • 火花/流1.4.1
  • 火花-卡桑德拉-连接器1.4.0-M3

我得到了这个RDDs计数约6000-7000元素的DStreamIds。id是分区密钥。

代码语言:javascript
复制
val ids: DStream[Ids] = ...
ids.joinWithCassandraTable(keyspace, tableName, joinColumns = SomeColumns("id"))

随着tableName变得更大,比方说大约30k的“行”,查询所需的时间要长得多,而且我在批处理持续时间阈值以下有困难。它的性能类似于使用大型IN-clause,我知道这是不可取的。

是否有更有效的方法来做到这一点?

答:在加入Cassandra之前,一定要记住用repartitionByCassandraReplica重新划分本地RDDs,以确保每个分区只对本地Cassandra节点工作。在我的例子中,我还必须在加入本地RDD/DStream上增加分区,这样任务才能均匀地分布在工人之间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-27 18:21:56

在您的表中"id“是分区键吗?如果不是,我认为应该是这样,否则您可能正在进行一次表扫描,这将随着表的变大而逐渐变慢。

而且,为了获得良好的性能,我相信您需要在您的ids上使用repartitionByCassandraReplica()操作,以便联接是每个节点上的一个本地操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32250271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档