2017-10-25 12 views
1

私はスカラ言語を使用してスパークでクエリを作成しようとしていますが、データはcassandraデータベースでテーブルとして使用できます。カサンドラテーブルで私は2つのキー、1)主キー 2を持っている)パーティション・キーパーティションキーの述語にはすべてのパーティションキー列が含まれている必要があります

カサンドラDDLはこのようなものになります:私は、クエリを実行すると

val conf = new SparkConf(true).set("spark.cassandra.connection.host","192.168.xx.xxx").set("spark.cassandra.auth.username","test").set("spark.cassandra.auth.password","test") 
val sc = new SparkContext(conf) 
var ctable = sc.cassandraTable("A", "B").select("id1","id2","timing","value").where("id1=?","1001") 

CREATE TABLE A.B (
    id1 text, 
    id2 text, 
    timing timestamp, 
    value float, 
    PRIMARY KEY ((id1, id2), timing) 
) WITH CLUSTERING ORDER BY (timing DESC) 

マイスパークプログラミング同じ "値"私は結果を取得していますが、私はid1またはid2のクエリ私はエラーが表示されます。

エラー取得済み: java.lang.UnsupportedOperationException:パーティションキー述部には、すべてのパーティションキー列またはパーティションキー列を含める必要があります。欠けている列:id2

私はspark-2.2.0-bin-hadoop2.7、Cassandra 3.9、scala 2.11.8を使用しています。

ありがとうございます。

答えて

0

必要な出力iは、以下のプログラムを使用して求めました。

val conf = new SparkConf(true).set("spark.cassandra.connection.host","192.168.xx.xxx").set("spark.cassandra.auth.username","test").set("spark.cassandra.auth.password","test") 
val sc = new SparkContext(conf) 
var ctable = sc.cassandraTable("A", "B").select("id1","id2","timing","value").where("id1=?","1001").where("id2=?","1002") 

これは、Sparkによってcassandraデータベースのパーティションキーにアクセスする方法です。

関連する問題