我有2个数据集,一个是另一个的补充。它看起来像这样(不是实际字段):
Question
========
id(key)
name
description
Answer
========
id(key)
type
question_id
Output
======
question_id (key)
name
description
type_a_count
type_b_count
我想知道每个问题有多少个特定类型的答案。我曾经使用mongodb的map reduce引擎通过发出我的问题映射器的相同字段(但归零),除了type_count字段中的一个,只是在我的reducer中添加所有内容。 我现在遇到的问题是,当我运行Answer mapper时,问题映射器中的值会被答案映射器中的值覆盖。
我正在寻找相当于mongodb的{out:“reduce”}选项。
答案 0 :(得分:1)
这个答案可能是也可能不是你喜欢的。我知道你标记了java,但是有一个名为cascalog的库(用clojure编写)可以用来编写hadoop查询。这很简单:
$ 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。