2012-03-13 2 views
1

GAE의 mapreduce에 게시물 요청을 보내려고합니다. 구글은 I 구성 방법Gae MapReduce. 프로그래밍 방식으로 게시물 요청을 보내는 방법

private String generateHtml(String configXml) { 
return "<html>" 
    + "<body>" 
    + "<form action=\"/mapreduce/start\" method=\"POST\">" 
    + "<textarea name=\"configuration\" rows=20 cols=80>" 
    + configXml 
    + "</textarea>" 
    + "<input type=\"submit\" value=\"Start\">" 
    + "</form>"; 

}

을 제공 :

String configString = ConfigurationXmlUtil.convertConfigurationToXml(config); 
String body = "configuration=" + configString; 

서버 매개 변수 "구성"을 얻을하려고 할 때 내가 널 포인터 예외가 이렇게;

textarea를 사용하는 html 시나리오와 동일한 요청을 어떻게 작성해야합니까?

답변

3

은 여기에 한 번 작업 대기열을 사용하여 한 방법은 다음과 같습니다

import static com.google.appengine.api.datastore.FetchOptions.Builder.withLimit; 
import static com.google.appengine.api.taskqueue.TaskOptions.Builder.withUrl; 

import com.google.appengine.api.taskqueue.TaskOptions; 

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.mapreduce.InputFormat; 
import org.apache.hadoop.mapreduce.Mapper; 
//... other imports 

// mapreduce config 
Configuration conf = new Configuration(false); 
conf.setClass("mapreduce.map.class", YourMapperClass.class, Mapper.class); 
conf.setClass("mapreduce.inputformat.class", DatastoreInputFormat.class, InputFormat.class); 

// setup callbacks if you need to know when the job is done. 
//conf.set(AppEngineJobContext.DONE_CALLBACK_URL_KEY, "/job-done-callback"); 

// you can also specify a queue. Defaults to "default" :) 
//conf.set(AppEngineJobContext.CONTROLLER_QUEUE_KEY, "mrqueue"); 
//conf.set(AppEngineJobContext.DONE_CALLBACK_QUEUE_KEY, "mrqueue"); 
//conf.set(AppEngineJobContext.WORKER_QUEUE_KEY, "mrqueue"); 


conf.set(DatastoreInputFormat.ENTITY_KIND_KEY, 'YourEntityKind'); 
String xml = ConfigurationXmlUtil.convertConfigurationToXml(conf); 

TaskOptions opts = withUrl("/mapreduce/start") 
    .param("configuration", xml) 
    .method(TaskOptions.Method.POST) 
    .header("X-Requested-With", "XMLHttpRequest"); 

// use our dedicated dbm4g queue 
// this needs to be configured by a user 
QueueFactory.getQueue("mrqueue").add(opts); 

내가 내 맵리 듀스 작업이 너무 많은 한계를 공격하지 않습니다 확인하기 위해 기본이 아닌 큐를 사용했다. 하지만 안전하게 기본 큐를 사용할 수 있습니다.

관련 문제