Hello Cassandra用户,
对于我们的一个新的大数据BI项目,我们使用Apache Cassandra 1.2.10作为我们的主要数据存储,并在Hadoop的支持下进行分析。为了进行原型设计,我们为Apache Cassandra / Hadoop分别提供了1个节点。 Pig是我们选择处理来自C *的数据。
在遇到实际问题之前,对于其中一个CF,主键是复合键。例如:((A,B,C),D)。基于(A,B,C)的文档组合是我们的分区键。
我们正面临着猪与C *交谈的几个问题。最重要的是;
问题1:
我们无法对属于分区键的列应用过滤器。这似乎是C * -Pig集成的基本要求。
示例:
CREATE table myCF(
colA text,
colB int,
colC bigint,
colD bigint,
primary key ((colA, colB, colC), colD)
)
Pig-Cassandra查询
data = LOAD 'CQL:// myKS / myCF where_clause%3DcolA%3DsomeVal%20于是%20colB%3DsomeVal%20于是%20colC%3DsomeVal' 使用CqlStorage();
异常
InvalidRequestException(原因:colA不能被多个限制 关系,如果它包括一个等于)
为了让您对这个问题有更多了解,这里是关于同一主题的jira。 https://issues.apache.org/jira/browse/CASSANDRA-6151
不幸的是,问题的状态通过解决方案解决为“无法修复”。不知道为什么。
因此,我们死在水中。不知道如何继续。
来自社区的人建议使用Pig过滤器。但这似乎不是一个想法,因为我们从Cassandra加载整个数据,然后在处理之前应用过滤器。不是
根据我的理解,如果我们避免按分区键列使用过滤器 在Cassandra查询中,将会跨群集扫描数据。
问题2:
如果二级索引列上只有过滤器,我们会收到超时。
任何人都可以帮助我解决上述问题。