我有以下代码。
Dataset<Row> kpiDF = spark.read().format("org.apache.spark.sql.cassandra")
.options(new HashMap<String, String>(){{put("keyspace",keyspace);put("table", table);}})
.load()
.filter("kpi='test'")
我的问题是,这将从cassandra表中加载所有数据然后应用过滤器,否则它只会加载“测试”。来自cassandra的kpi数据?
答案 0 :(得分:1)
如果列kpi
是分区键,则spark-cassandra-connector将只读取相应的记录。
默认情况下启用谓词下推。
如果cassandra不能满足过滤条件,那么spark-cassandra-connector将读取完整数据,然后应用过滤器。
您可以使用df.explain
检查过滤器是否被推送到cassandra。