2014-05-21 2 views
0

를 사용하여 파이썬 riak 클라이언트에 의해 riak에 쿼리를 줄일 다음 "http://basho.github.io/riak-python-client/query.html#riak.mapreduce.RiakMapReduce.map"에 주어진전송하는 방법 매개 변수는에 매개 변수를 보낼 수있는 방법 얼랑

query.map() 

기능을.

mysystem에 erlmap fodler에서 map.erl을 사용하고 있습니다. 그 안에 나는지도 기능을 가지고있다.

I는 다음과 같이 준 :

query.run() 

그것은 던지고 오류 : 맵 기능이 개인에 의해 실행됩니다

Traceback (most recent call last): 

File "<input>", line 1, in <module> 
File "/usr/lib/python2.6/site-packages/riak-1.5.2-py2.6.egg/riak/mapreduce.py", line 234, in run 
result = t.mapred(self._inputs, query, timeout) 
File "/usr/lib/python2.6/site-packages/riak-1.5.2-py2.6.egg/riak/transports/http.py", line 322, in mapred 
(repr(response[0]), repr(response[1]))) 
Exception: Error running MapReduce operation. Headers: {'date': 'Wed, 21 May 2014 07:27:23 GMT', 'content-length': '1391', 'content-type': 'text/html', 'http 
_code': 500, 'server': 'MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact)'} Body: '<html><head><title>500 Internal Server Error</title></head><body>< 
h1>Internal Server Error</h1>The server encountered an error while processing this request:<br><pre>{error,{exit,{json_encode,{bad_term,{xform_map,0}}},\n 
     [{mochijson2,json_encode,2,\n       [{file,"src/mochijson2.erl"},{line,149}]},\n    {mochijson2,\'-json_encode_proplis 
t/2-fun-0-\',3,\n       [{file,"src/mochijson2.erl"},{line,167}]},\n    {lists,foldl,3,[{file,"lists.erl"},{line,1197}]},\n 
    {mochijson2,json_encode_proplist,2,\n       [{file,"src/mochijson2.erl"},{line,170}]},\n    {riak_kv_wm_mapred,send_err 
or,2,\n         [{file,"src/riak_kv_wm_mapred.erl"},\n         {line,70}]},\n    {riak_kv_wm_mapre 
d,pipe_mapred,2,\n         [{file,"src/riak_kv_wm_mapred.erl"},\n         {line,173}]},\n  {webm 
achine_resource,resource_call,3,\n         [{file,"src/webmachine_resource.erl"},\n         {line,186}]} 
,\n    {webmachine_resource,do,3,\n         [{file,"src/webmachine_resource.erl"},\n         { 
line,142}]}]}}</pre><P><HR><ADDRESS>mochiweb+webmachine web server</ADDRESS></body></html>' 

답변

0

>>> query.map(['/home/intel/gopi/sam_programmes/erl/erlmap/map.erl','Map'],options={'language':'erlang'}) 

명령 가기 후에 다양한 Riak 노드의 vnode. .map()에 보내는 내용은 이미 컴파일되고 각 노드의 코드 경로에서로드되거나 사용 가능한 모듈 및 함수의 소문자 이름 (원자)이어야합니다. 맵 단계를 처리하는 v 노드는 로컬 시스템의 컴파일되지 않은 소스 파일에 액세스 할 수 없습니다.

Erlang 클라이언트를 사용할 때 map 함수를 익명으로 정의하고 mapred 호출에서 함수 객체를 전달할 수 있지만 python 클라이언트는 vnode를 실행할 수있는 바이트 코드로 재미를 컴파일 할 수 없습니다.

+0

erlang 셸에서 mochijson을 사용하는 방법. > mochijson : encode (L) 그런 다음 오류 예외가 발생했습니다 : 정의되지 않은 함수 mochijson2 : erlang 셸에서 1 인코딩/ –

+0

위의 작업을 수행하는 단계를 자세히 설명해 주시겠습니까 –

+0

이제 빔 파일을 보관했습니다. 또한 app.config에 언급했지만 여전히 오류가 발생하면 query.map ([ 'maps,'funs '])을 전달한 다음 query.run()을 사용하지만 오류가 발생하지 않습니다. –

관련 문제