簡體   English   中英

Spark Cassandra Connector - where子句

[英]Spark Cassandra Connector - where clause

我正在嘗試使用Datasax Cassandra Connector進行select where ,但我收到以下錯誤:

java.io.IOException: Exception during preparation of SELECT "path" FROM "tracking"."user_page_action" WHERE token("user_id") > ? AND token("user_id") <= ? AND user_id = ?   ALLOW FILTERING: user_id cannot be restricted by more than one relation if it includes an Equal

我真的不明白為什么connector添加其他限制。

這就是我試圖閱讀的內容:

spark.cassandraTable(keySpace,table).select(column).where(whereColumn + " = ?", whereColumnValue).collect()

它就像在他們的文檔中一樣

user_id是表的primary key ,我也嘗試使用cqlsh在終端中select where並且它可以工作。

我看了類似的問題,但沒有幫助

使用spark cassandra連接器時,Dataframe where子句不起作用

Spark Cassandra連接器 - where子句

正如您所注意到的,spark-cassandra-connector在令牌上添加了范圍限制。 通常,您的查詢會根據令牌范圍由連接器拆分為多個查詢,以強制執行針對副本的每個查詢,從而確保數據位置。 在您的情況下,您使用user_id = value提供完整的分區鍵(可以說,在這種情況下,Spark不是正確的工具,但我不知道您的應用程序在做什么)。 已經有一些關於Spark-Cassandra-Connector項目的討論來修復它,我不知道它是否發生過。

但是,如果切換到Cassandra 2.2或3(我假設您正在運行Cassandra 2.1),Cassandra將接受生成的查詢(分區鍵受到相等和范圍限制的查詢)。 我在2.2.6和3.0.5上進行了測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM