我有一个带有5亿行的卡桑德拉桌。我想根据一个使用Spark的字段过滤,该字段是Cassandra中的分区密钥。
您可以根据列表键提出最佳/有效的方法,以过滤Spark/Spark SQL,这也很大。
基本上,我只需要从卡桑德拉表中的那些行,这些行中存在于密钥列表中。
我们正在使用DSE及其功能。我使用的方法大约需要大约一个小时的时间。
您是否检查过repartitionByCassandraReplica
和joinWithCassandraTable
?
joinWithCassandraTable
使用Java驱动器执行单个 查询源RDD所需的每个分区,因此不需要 数据将被请求或序列化。这意味着任何在任何之间 可以执行RDD和Cassandra表,而无需做完整的桌子 扫描。当两个Cassandra表之间执行时,共享相同的 分区密钥这将不需要机器之间的数据移动。 在所有情况下,此方法将使用源RDD的分区和 数据位置的位置。该方法
repartitionByCassandraReplica
可用于重新安置数据 在RDD中,以匹配给定表的复制策略和 钥匙空间。该方法将在 给定RDD,然后使用这些值来确定 集群将负责该数据。