2016-12-14 63 views
0

使用casssandra 2.28,java-connector3,sparks2.0。Cassandra select select multiple params

我想用多個選擇參數編寫一個簡單的查詢 - 無法獲得正確的語法。 單PARAM工作

CassandraJavaRDD<CassandraRow> rdd = javaFunc 
       .cassandraTable("test", "tests").where("ID= ?", "1"); 

我怎麼多個參數,可以嘗試多種方法都失敗:

javaFunc.cassandraTable("tests", "test").where("ID= ?", "1").and("Name= ?", "John"); 

javaFunc.cassandraTable("tests", "test").where("ID= ?", "1"+ " and "+ "Name= ?", "John"); 

嘗試構建聲明,給出了錯誤 - 不喜歡 「EQ」:

Statement s = QueryBuilder.select().all() 
      .from("tableName") 
      .where(eq("column_1", 1)) 
      .and(eq("column_2", 9)) 
      .and(eq("column_3", 50)); 

似乎是一個基本的101查詢,但只是找不到任何suita示例代碼。

+0

什麼你錯過了嗎?由查詢生成器生成的CQL對我來說看起來是有效的:SELECT * FROM tableName WHERE column_1 = 1 AND column_2 = 9 AND column_3 = 50; –

+0

如果問題是編譯器錯誤,則可能需要從QueryBuilder導入eq,即'import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;' –

+0

@Andy謝謝,com.datastax.driver.core.querybuilder.QueryBuilder.eq是訣竅。但是,如何將此Resultset轉換爲RDD-似乎是一個多步驟過程?還有,我的原始多參數查詢沒有辦法 - 它返回一個RDD,我可以簡單地對它做一個cassandracount(這是我需要的這個當前問題) –

回答

1

這樣解決了所有的語法。凡()。凡()(無。而)

javaFunc.cassandraTable("tests", "test").where("ID= ?", "1").where("Name= ?", "John"); 

不知道這是唯一的出路或最優化的方式