ラムダ アーキテクチャに関する Nathan Marz の本を読みました。私は実際にこのソリューションの概念実証を行っています。
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を取得できます。
たとえば、名前 request(id_article, name) に対して次の結果が得られます: (1, パスタ) - (2, パスタ2) - (3, パスタ)
数量リクエスト (id_article, quantity) の場合: (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")
);
問題は、結果をマージする方法がわからないことです。Cascalog と HDFS のデータとの結合を実行するにはどうすればよいですか?