根据documentation,Cassandra Partitioner可以帮助减少改组改善整体表现。要利用分区程序,我应该使用keyBy
方法。给出表:
CREATE TABLE data_storage.dummy (
id text,
value bigint,
PRIMARY KEY (id)
)
我可以使用RDD API和DataFrame API查询表
val keySpace = "data_storage"
val table = "dummy"
//option 1
private val df: DataFrame = session.read.format("org.apache.spark.sql.cassandra")
.option("keyspace", keySpace)
.option("table", table)
.load
println(df.rdd.partitioner) //prints None
//option 2
val rdd = session.sparkContext.cassandraTable(keySpace, table).keyBy("id")
println(rdd.partitioner) //prints Some(CassandraPartitioner)
有没有办法将信息传递给DataFrame阅读器,了解如何查询数据(类似于keyBy()
DataFrame的方法)
答案 0 :(得分:3)
在DataFrame的情况下,您不需要指定分区程序。您只需确保Cassandra DataFrame的pushdown
设置为true
即可。
请查看此文档Automatic Predicate Pushdown and Column Pruning。