首页 文章

Spark Cassandra Connector - 无法获取动态列

提问于
浏览
0

我有一个带有很多动态列的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 回答

  • 2

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

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

相关问题