gpt4 book ai didi

scala - joinWithCassandraTable 在增加表大小时变得更慢

转载 作者:行者123 更新时间:2023-12-01 02:06:23 27 4
gpt4 key购买 nike

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

  • Cassandra 2.2(多节点)
  • Spark/Streaming 1.4.1
  • Spark-Cassandra-连接器 1.4.0-M3

  • 我有这个 DStream[Ids],其中 RDD 大约有 6000-7000 个元素。 id是分区键。
    val ids: DStream[Ids] = ...
    ids.joinWithCassandraTable(keyspace, tableName, joinColumns = SomeColumns("id"))

    tableName变得更大,假设大约有 30k“行”,查询需要更长的时间,而且我无法保持在批处理持续时间阈值以下。它的性能类似于使用大量 IN -clause,我明白这是不可取的。

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

    回答:
    永远记住用 repartitionByCassandraReplica 重新分区你的本地 RDDs在加入 Cassandra 之前,确保每个分区只针对本地 Cassandra 节点工作。就我而言,我还必须在加入的本地 RDD/DStream 上增加分区,以便任务在工作人员之间均匀分布。

    最佳答案

    “id”是表中的分区键吗?如果没有,我认为它需要这样做,否则您可能正在执行表扫描,随着表变大,它的运行速度会逐渐变慢。

    同样为了使用这种方法获得良好的性能,我相信您需要在您的 ids RDD 上使用 repartitionByCassandraReplica() 操作,以便连接是每个节点上的本地操作。

    this .

    关于scala - joinWithCassandraTable 在增加表大小时变得更慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32250271/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com