在Spark中对大型数据框架进行高效过滤

时间:2017-03-02 11:07:46

标签: apache-spark cassandra apache-spark-sql spark-dataframe spark-cassandra-connector

我有一张拥有5亿行的Cassandra表。我想基于一个字段进行过滤,该字段是使用spark的Cassandra中的分区键。

你能否根据列表键建议最好的/有效的方法来过滤Spark / Spark SQL,这也很大。

基本上我只需要Cassandra表中存在于键列表中的那些行。

我们正在使用DSE及其功能。 我使用的方法大约花了大约一个小时。

1 个答案:

答案 0 :(得分:1)

您是否选中了repartitionByCassandraReplicajoinWithCassandraTable

https://github.com/datastax/spark-cassandra-connector/blob/75719dfe0e175b3e0bb1c06127ad4e6930c73ece/doc/2_loading.md#performing-efficient-joins-with-cassandra-tables-since-12

  

joinWithCassandraTable利用java驱动器执行单个驱动器   查询源RDD所需的每个分区,因此不需要   数据将被请求或序列化。这意味着任何之间的联接   可以在不执行完整表的情况下执行RDD和Cassandra表   扫描。在两个共享相同的Cassandra表之间执行时   分区键这不需要在机器之间移动数据。   在所有情况下,此方法将使用源RDD的分区和   数据位置的位置。

     

方法repartitionByCassandraReplica可用于重定位数据   在RDD中匹配给定表的复制策略和   密钥空间。该方法将查找分区密钥信息   给定RDD然后使用这些值来确定中的哪些节点   群集将负责该数据。