【问题标题】:Jcascalog to query thrift data on HDFSJcascalog 在 HDFS 上查询 thrift 数据
【发布时间】:2015-08-26 00:34:47
【问题描述】:

我阅读了 Nathan Marz 关于 lambda 架构的书。 我实际上是在对这个解决方案进行概念验证。

我很难构建我的 Jcascalog 查询。

这是我感兴趣的节俭模式中的一部分:

union ArticlePropertyValue {
  1: decimal quantity,
  2: string name;
}

union ArticleID {
  1: int id;
}

struct ArticleProperty {
   1: required ArticleID id;
   2: required ArticlePropertyValue property;
}

union DataUnit {
  1: TicketProperty ticket_property;
  2: ArticleProperty article_property;
}

我使用 Pail 将一些数据存储到文件夹中:/home/tickets

现在我想对这个数据提出一个请求:我想得到按文章名称分组的数量总和。 所以首先我需要得到名称,然后是数量。对于每个我可以获得文章的 ID。

例如,对于名称请求(id_article,名称),我将得到以下结果: (1、意大利面)—— (2、意大利面2)—— (3、意大利面)

对于数量请求(id_article,数量): (1, 2) - (2, 1) - (3, 1)

  Tap source = splitDataTap("/home/florian/Workspace/tickets");
  Api.execute(
          new StdoutTap(),
          new Subquery("?name", "?sum")
            .predicate(source, "_", "?data")
            .predicate(new ExtractArticleName(), "?data")
                .out("?id", "?name")
            .predicate(new ExtractArticleQuantity(), "?data")
                .out("?id", "?quantity")
            .predicate(new Sum(), "?quantity")
                .out("?sum")
          );

问题是我不怎么合并结果? 如何在 HDFS 中执行与 Cascalog 和数据的联接?

【问题讨论】:

    标签: hadoop hdfs thrift cascalog lambda-architecture


    【解决方案1】:

    我猜你想将这个查询的结果存储在 HDFS 中,那么你需要执行以下操作:

    假设数据要保存在“/data”文件夹中,并且是简单的文本格式,那么你需要这样做:

    Subquery subquery =  new Subquery("?name", "?sum")
                .predicate(source, "_", "?data")
                .predicate(new ExtractArticleName(), "?data")
                .out("?id", "?name")
                .predicate(new ExtractArticleQuantity(), "?data")
                .out("?id", "?quantity")
                .predicate(new Sum(), "?quantity")
                .out("?sum");
    
    Api.execute(Api.hfsTextline("/data"), subquery);
    

    【讨论】:

      猜你喜欢
      • 2017-01-10
      • 2015-05-28
      • 1970-01-01
      • 2013-07-05
      • 2015-04-24
      • 2018-06-05
      • 2022-06-25
      • 1970-01-01
      • 2014-09-27
      相关资源
      最近更新 更多