如何利用DataFrames利用Cassandra分区器?

时间:2018-03-14 10:02:16

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

根据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的方法)

1 个答案:

答案 0 :(得分:3)

在DataFrame的情况下,您不需要指定分区程序。您只需确保Cassandra DataFrame的pushdown设置为true即可。 请查看此文档Automatic Predicate Pushdown and Column Pruning