2014-10-31 68 views
0

我有一個擁有大量動態列的cassandra列家族。我正在運行一個簡單的Spark-Cassandra連接器示例,我試圖從該表中獲取所有數據。問題在於它沒有從我的列族中獲取任何動態列。Spark Cassandra Connector - 無法獲取動態列

在我的示例和下面的代碼片段中,它能夠獲取所有行的主鍵和輔助索引列,但不能獲取任何其他列(它有30多個動態列)。我有一種感覺,根據我在這裏的閱讀(Spark Datastax Java API Select statements),連接器支持僅獲取分區和集羣密鑰作爲列。有人可以確認我的理解是否正確。如果有人能夠建議如何解決這個問題,那將會很棒。

/** 
* Loads a cassandra column family as a spark RDD. 
*/ 
public static CassandraJavaRDD<CassandraRow> getCassandraTableRDD(
     JavaSparkContext context, String keyspace, String table) 
{ 
    return javaFunctions(context).cassandraTable(keyspace, table); 
} 

CREATE TABLE source_product_canonical_data_sample (
    'key' text PRIMARY KEY, 
    source text 
) WITH 
    comment='' AND 
    comparator=text AND 
    read_repair_chance=0.000000 AND 
    gc_grace_seconds=864000 AND 
    default_validation=text AND 
    min_compaction_threshold=4 AND 
    max_compaction_threshold=32 AND 
    replicate_on_write='true' AND 
    compaction_strategy_class='SizeTieredCompactionStrategy' AND 
    compression_parameters:sstable_compression='LZ4Compressor'; 

回答

2

您的CQL表定義不知道您的「動態列」。沒有複合主鍵,其中有聚類列。動態列/寬行是與舊的數據模型相關的術語,在CQL中它們已被複合主鍵替代。

見喬納森·埃利斯本優秀的博客文章,解釋如何過渡到新的數據模型:http://www.datastax.com/dev/blog/does-cql-support-dynamic-columns-wide-rows

+0

感謝@Piotr指導我在正確的方向。根據您所共享的鏈接,在CQL中似乎我們不能擁有動態列(單元格)本身,並且需要預先定義列。但對於我的用例,我想我可以使用地圖集合將所有動態屬性存儲在地圖列中。感謝你的幫助 !! – invinc4u 2014-11-03 19:57:59

相關問題