【问题标题】:Using Pig with Cassandra CQL3将 Pig 与 Cassandra CQL3 一起使用
【发布时间】:2013-04-11 13:54:38
【问题描述】:

当尝试对 CQL3 创建的 Cassandra Schema 运行 PIG 时,

-- This script simply gets a row count of the given column family  
rows = LOAD 'cassandra://Keyspace1/ColumnFamily/' USING CassandraStorage();
counted = foreach (group rows all) generate COUNT($1);
dump counted;

我收到以下错误。

Error: Column family 'ColumnFamily' not found in keyspace 'KeySpace1'

我知道这是设计使然,但我一直无法找到将 CQL3 表加载到 PIG 中的正确方法。

有人能指出我正确的方向吗?是否缺少一些文档?

【问题讨论】:

标签: cassandra apache-pig cql cql3


【解决方案1】:

Cassandra 1.2.8 现在支持此功能

【讨论】:

    【解决方案2】:

    正如您提到的,这是设计使然,因为如果更新 thrift 以允许这样做,则会损害向后可计算性。不要使用 CQL(我猜你使用 cqlsh)创建键空间和列族,而是尝试使用 C* CLI

    也看看这些问题:

    【讨论】:

    • 这并没有真正解决如何。但我可能只是停留在这一点上
    【解决方案3】:

    根据https://github.com/alexliu68/cassandra/pull/3,看来此修复计划用于 Cassandra 的 1.2.6 版本。听起来他们正试图在不久的将来解决这个问题,但当然没有确定的预计到达时间。

    【讨论】:

      【解决方案4】:

      正如 e90jimmy 所说,Cassandra 1.2.8 支持它,但我们在使用计数器列类型时遇到了问题。这已由 Alex Liu 修复,但由于 1.2.7 中的回归问题,补丁无法继续:

      https://issues.apache.org/jira/browse/CASSANDRA-5234

      要更正此问题,请等到 2.0 准备好生产或下载源代码,自行应用上述链接中的补丁并重建 cassandra .jar。现在已经为我工作了......

      【讨论】:

        【解决方案5】:

        在 Pig 中访问 Cql3 表的最佳方式是使用 CqlStorage 处理程序

        语法与上面的类似

        row = Load 'cql://Keyspace/ColumnFamily/' Using CqlStorage()
        

        更多信息In the Dev Blog Post

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-04-17
          • 1970-01-01
          • 1970-01-01
          • 2015-05-06
          • 1970-01-01
          • 2014-04-20
          • 2017-03-31
          相关资源
          最近更新 更多