繁体   English   中英

如何在Spark中将Cassandra表中的行作为Dataframe加载?

[英]How to load rows from Cassandra table as Dataframe in Spark?

我可以将整个Cassandra表加载为数据框,如下所示

val tableDf = sparkSession.read
      .format("org.apache.spark.sql.cassandra")
      .options(Map( "table" -> table, "keyspace" -> keyspace))
      .load()

但是我找不到一种通过主键获取行的方法,例如

select * from table where key = ''

有没有办法做到这一点?

val tableDf = sparkSession.read
      .format("org.apache.spark.sql.cassandra")
      .options(Map( "table" -> table, "keyspace" -> keyspace))
      .load()
      .filter("key='YOUR_KEY'")

使用此spark-cassandra-connector将使用谓词下推,并且仅获取所需的数据。

数据框和谓词下推

Java的相同方法是:

SparkSession sparkSession = SparkSession.builder().appName("Spark Sql Job").master("local[*]")
                .config("spark.sql.warehouse.dir", "file:///c:/tmp/spark-warehouse")
                .config("spark.cassandra.connection.host", "localhost")
                .config("spark.cassandra.connection.port", "9042").getOrCreate();
        SQLContext sqlCtx = sparkSession.sqlContext();
        Dataset<Row> rowsDataset = sqlCtx.read().format("org.apache.spark.sql.cassandra").option("keyspace", "myschema")
                .option("table", "mytable").load();
        rowsDataset.show();

我相信scala应该是一样的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM