0

foob​​ar.relationships.friend.count をカウントしたい場合、このドキュメント構造に対して map/reduce を使用して、カウントが 22 になるようにするにはどうすればよいでしょうか。

[
    [0] {
              "rank" => nil,
        "profile_id" => 3,
          "20130913" => {
            "foobar" => {
                    "relationships" => {
                      "acquaintance" => {
                        "count" => 0
                    },
                    "friend" => {
                          "males_count" => 0,
                                  "ids" => [],
                        "females_count" => 0,
                                "count" => 10
                    }
                }
            }
        },
          "20130912" => {
            "foobar" => {
                    "relationships" => {
                      "acquaintance" => {
                        "count" => 0
                    },
                    "friend" => {
                          "males_count" => 0,
                                  "ids" => [
                            [0] 77,
                            [1] 78,
                            [2] 79
                        ],
                        "females_count" => 0,
                                "count" => 12
                    }
                }
            }
        }
    }
]
4

2 に答える 2

-1

独自の入力リーダーが必要になると思います。このサイトでは、その方法についてのチュートリアルを提供しています: http://bigdatacircus.com/2012/08/01/wordcount-with-custom-record-reader-of-textinputformat/

次に、マッパーで mapreduce を実行します

Mapper<LongWritable, ClassRepresentingMyRecords, Text, IntWritable>

マップ関数では、カウントの値を抽出し、これが値です。鍵が必要かどうかわかりませんか?

レデューサーでは、すべての要素を同じキー (あなたの場合は ='count') でまとめて追加します。

これで思い通りになれるはずです。

于 2013-09-12T12:46:08.313 に答える