Cassandra / Hadoop WITH COMPACT STORAGE选项。为什么需要它,是否可以将其添加到现有的表/ cf中

时间:2013-09-26 16:09:10

标签: hadoop cassandra cql3 cassandra-cli

我正在开发Hadoop / Cassandra集成我有几个问题我希望有人可以帮助我。

首先,我似乎要求使用选项WITH COMPACT STORAGE创建源表/ cf,否则我得到错误无法读取map / reduce代码中的键空间。

我想知道这是否真的需要它?

如果是这种情况,我的第二个问题是,是否有可能/如何将WITH COMPACT STORAGE选项添加到预先放置的表中? ..或者我将不得不重新创建它们并移动数据。

我正在使用Cassandra 1.2.6

提前谢谢 格里

2 个答案:

答案 0 :(得分:3)

我假设你正在使用job.setInputFormatClass(ColumnFamilyInputFormat.class);

相反,请尝试使用job.setInputFormatClass(CqlPagingInputFormat.class);

Mapper输入为Map<String, ByteBuffer>, Map<String,ByteBuffer>

同样,如果你需要向Cassandra写出CqlPagingOutputFormat和相应的输出类型。

有关详细信息,请参阅http://www.datastax.com/dev/blog/cql3-table-support-in-hadoop-pig-and-hive

答案 1 :(得分:0)

@Gerry

“WITH COMPACT STORAGE”是一种CQL3语法,用于创建与Thrift客户端和传统列族兼容的表结构。

基本上,当使用此选项时,表格,或者我应该说列族,是在不使用任何复合材料的情况下创建的。

你应该知道CQL3表很大程度上依赖于复合材料来工作。

现在回答你的问题:

我想知道这是不是它需要怎样?

可能是因为你的map / reduce代码无法处理Composites。但我相信Cassandra的1.2.6版本,你拥有处理CQL3表所需的所有代码。查看包 org.apache.cassandra.hadoop 中的类。

是否可以/如何将WITH COMPACT STORAGE选项添加到预先放置的表格上?

不,一旦创建,就无法修改/更改表结构。你需要某种迁移。