我有一个带有大量动态列的cassandra列族。我正在运行一个简单的Spark-Cassandra连接器示例,我试图从该表中获取所有数据。问题是它没有从我的列族中获取任何动态列。
在我的示例和下面的代码片段中,它能够获取所有行的主键和辅助索引列,但不能获取任何其他列(它有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';
答案 0 :(得分:2)
您的CQL表定义不知道您的&#34;动态列&#34;。其中没有包含聚类列的复合主键。动态列/宽行是与旧的thrift数据模型相关的术语,在CQL中,它们已被复合主键替换。
请参阅Jonathan Ellis撰写的这篇优秀博客文章,解释如何过渡到新的数据模型:http://www.datastax.com/dev/blog/does-cql-support-dynamic-columns-wide-rows