2012-06-14 26 views
1

我已将字符串和整数值插入到Cassandra列族的动态列中。当我查询CQL中的值时,它们显示为十六进制编码位。Cassandra CQL:如何从列中选择编码值

我可以以某种方式告诉查询将值解码为字符串或整数吗?

我也很乐意在CLI中做到这一点,如果更容易。在那里,我看到你可以指定assume <column_family> validator as <type>;,但这适用于所有列,它们有不同的类型,所以我必须运行这个假设并多次查询。

(请注意,列是动态的,所以在创建列族时我没有指定验证器)。

+0

你是否在你的columnfamily规范中指定了default_validation_class? – Tamil

+0

@Tamil:不 - 我没有设置default_validation_class,因为所有的值都不是相同的类型,所以验证对于某些列是错误的。 –

+0

那么cql将无法做到我认为的有效解码。默认情况下,它是我认为的bytestype。我没有试验'假设'让我为你尝试 – Tamil

回答

0

你可以在cqlsh中使用ASSUME,就像在cassandra-cli中一样(虽然它只适用于打印值,不会发送它们,但对于你来说应该没问题)。您也可以使用它在每列的基础,如:

ASSUME <column_family> ('anchor:cnnsi.com') VALUES ARE text; 

..although(一),我只是测试它,而这个功能在卡桑德拉-1.1.1破损及更高版本。我发布了一个修复程序CASSANDRA-4352。和(b),这可能不是一个多用途或有用的解决方案,用于一些以上的一次性用途。我强烈推荐在这里使用CQL 3,因为CQL直接支持像这样的宽存储引擎行已被弃用。您的表格当然适用于(易于使用的)CQL 3模型,但如果不了解如何使用它,我不能确切地说明它会是什么。

+0

这就是我正在寻找的答案 - 认为必须有指定列的语法,但在任何文档中都找不到它。通配符会很好,但现在应该这样做。谢谢。我还会检查CQL 3。 –