2014-03-06 38 views
1

我有C *列族來存儲類似事件的數據。在CQL3中以這種方式創建列列:Spark + Cassandra。具有集羣順序問題的複合鍵

CREATE TABLE event (
    hour text, 
    stamp timeuuid, 
    values map<text, text>, 
    PRIMARY KEY (hour, stamp) 
) WITH CLUSTERING ORDER BY (stamp DESC) 

分區程序是Murmur3分區程序。然後,我試圖通過Calliope庫來構建對該數據的Spark查詢。在結果中,我收到兩個問題:

  1. 在我的情況下,聚簇鍵('小時'字段)有超過1000條記錄,但響應僅包含每個鍵的前1000條記錄。我可以在查詢中增加頁面大小以接收更多數據,但據我所知,它必須是paginator的任務,才能查看數據並對其進行分片。
  2. 我收到每個記錄不止一次。

關於第一個問題我從Calliope作者那裏得到CQL3驅動程序必須分頁數據的答案。他建議我閱讀DataStax article。但是我無法找到答案如何使用正確的指令向驅動程序構建查詢。

關於第二個問題我發現這是Cassandra中的Hadoop連接器的問題012.1.2.11。但是我使用C * 2.0.3並且用所需版本的庫重新構建了Spark。我也使用Calliope 0.9.0-C2-EA版本。

您能否指點我的文檔或代碼示例來解釋解決這些問題或演示解決方法的正確方法?我想我以不恰當的方式使用C * -to-Spark連接器,但我找不到解決方案。

預先感謝您。

+0

它似乎是「有集羣秩序」條款是兩個問題的來源。當我從類似的表中讀取時(沒有WITH CLUSTERING ORDER BY),結果的限制和重複都不會出現。 –

回答

0

現在不可能對集羣密鑰使用非默認排序。所有工作正常,然後羣集鍵的排序順序是默認(ACS)。

解決方法是修改數據模型以使用具有默認聚類順序的複合鍵。