Spark Cassandra Connector - 无法获取动态列

时间:2014-10-31 21:52:32

标签: cassandra apache-spark

我有一个带有大量动态列的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';

1 个答案:

答案 0 :(得分:2)

您的CQL表定义不知道您的&#34;动态列&#34;。其中没有包含聚类列的复合主键。动态列/宽行是与旧的thrift数据模型相关的术语,在CQL中,它们已被复合主键替换。

请参阅Jonathan Ellis撰写的这篇优秀博客文章,解释如何过渡到新的数据模型:http://www.datastax.com/dev/blog/does-cql-support-dynamic-columns-wide-rows