1

重複の可能性:
mongo の out:reduce オプションに相当する Hadoop のオプション

私は 2 つのデータセットを持っています。一方は他方を補完するものです。次のようになります (実際のフィールドではありません)。

Question
========
id(key)
name
description

Answer
========
id(key)
type
question_id

Output
======
question_id (key)
name
description
type_a_count
type_b_count

各質問に対して、特定のタイプの回答がいくつあるか知りたいです。type_countフィールドのフィールドを除いて質問マッパーの同じフィールド(ただしゼロ化)を発行することにより、mongodbのマップ削減エンジンでこれを行い、すべてをレデューサーに追加するだけでした。私が今抱えている問題は、回答マッパーを実行すると、質問マッパーの値が回答マッパーの値で上書きされることです。

mongodb の {out: "reduce"} オプションに相当するものを探しています。

詳細:

  • 質問マッパーにマッパーのみを使用しています
  • マージしたいので、両方のジョブのoutputURIは同じです
  • 質問マッパーの出力と回答マッパーの出力をレデューサーの入力として使用したい
4

1 に答える 1

1

この答えは、あなたの好みに合う場合と合わない場合があります。あなたがJavaにタグを付けたことは知っていますが、hadoopクエリを書くために使用できるcascalog(clojureで書かれた)というライブラリがあります。それはとても簡単です:

$ lein repl
REPL started; server listening on localhost port 16309
myapp=> (use 'cascalog.playground)
nil
myapp=> (bootstrap)
nil
myapp=> (def questions [["1" "what?" "desc what"] ["2" "where?" "Desc where"]])
#'myapp/questions
myapp=> (def answers [["1" "a" "1"]["2" "a" "1"]["3" "a" "1"]["4" "b" "2"]])
#'myapp/answers
myapp=> (?<- (stdout) [?type ?name ?desc ?count] (questions ?qid ?name ?desc) (answers ?aid ?type ?qid) (c/count ?count))

RESULTS
-----------------------
a       what?   desc what   3
b       where?  Desc where  1

以下は、cascalog について学ぶための良い出発点です: http://nathanmarz.com/blog/introducing-cascalog-a-clojure-based-query-language-for-hado.html

于 2012-07-09T14:54:56.590 に答える