2011-10-28 8 views
2

Map2関数がMap1関数の結果を入力として受け取るように、2つのマップフェーズを含むmaplduceクエリをerlangで実行します。それが可能であり、詳細については各mapフェーズ複数のマップ関数を持つriak mapredクエリの実行方法

  • の戻り値でなければならないものを、場合:私は2つの単純なマップ機能を使用してテストmapredクエリを実行した

、それぞれが入力を返します。オブジェクト(リスト内)。しかし、クエリをのrunninで私は

ありがとうriak_search-0.14.2

アーランR14B03(ERTS-5.8.4)を使用してい

Map1 = fun(O,_,_) -> [O] end. 
Map2 = fun(O, _,_) -> [O] end. 


C:mapred_bucket(<<"b7bc1418-198d-44a3-8835-8aa9cb416d5b">>, [{map, {qfun, Map1}, none, false}, {map, {qfun, Map2}, none, true}]). 

{{badmatch,{r_object,<<"b7bc1418-198d-44a3-8835-8aa9cb416d5b">>, 
        <<255,230,193,167,254,7,246,64,154,190,36,236,32,232,189, 
         169,161,124,23,86>>, 
        [{r_content,{dict,2,16,16,8,80,48, 
             {[],[],[],[],[],[],[],[],[],[],[],...}, 
             {{[],[],[],[],[],[],[],[],[],...}}}, 
           <<"12d33872-4c92-4da5-9d16-5036a8059253">>}], 
        [{<<5,215,86,61>>,{1,63487018636}}], 
        {dict,1,16,16,8,80,48, 
          {[],[],[],[],[],[],[],[],[],[],[],[],...}, 
          {{[],[],[],[],[],[],[],[],[],[],...}}}, 
        undefined}}, 
[{riak_kv_map_phase,build_input,2}, 
    {riak_kv_map_phase,'-handle_input/3-lc$^0/1-0-',2}, 
    {riak_kv_map_phase,handle_input,3}, 
    {luke_phase,executing,2}, 
    {gen_fsm,handle_msg,7}, 
    {proc_lib,init_p_do_apply,3}]} 

エラーBadMatchエラーが出ます!

答えて

5

MapメソッドのシグネチャがErlangにあるのかどうかはわかりません.Javascriptでmap/reduceを行っただけなので、助けてください。

マップフェーズをチェインするには、最後のマップ関数だけがRiakのオブジェクトのリストを返す必要があります。 。それ以上の他のすべてのマップ機能は、バケット名とJavaScriptで

に渡された値のキーを含むタプルを返す必要があり、私はそうのようにこれを達成しました:

function map_function(value, keydata, arg) { 
    //filtering stuff here 
    if(arg.last) { 
     data["key"] = value.key; 
     return [data]; 
    } 
    else { 
     return [[value.bucket, value.key]]; 
    } 
    //this is in the case the filter returns true; if the filter returns false, return an empty tuple 
    } 

この情報がお役に立てば幸いです。

4

最初のマップ機能から{バケット、キー}または{{バケット、キー}、KeyData}を返す必要があります。
このように:

Map1 = fun(O,_,_) -> [{riak_object:bucket(O), riak_object:key(O)}] end. 
Map2 = fun(O, _,_) -> [O] end. 


C:mapred_bucket(<<"b7bc1418-198d-44a3-8835-8aa9cb416d5b">>, [{map, {qfun, Map1}, none, false}, {map, {qfun, Map2}, none, true}]). 
関連する問題