Tôi cần chạy công việc Mapreduce năng động theo nghĩa là các thông số cần được chuyển đến các chức năng bản đồ và giảm mỗi khi công việc Mapreduce được chạy (ví dụ, để đáp ứng yêu cầu của người dùng).Làm cách nào để truyền các tham số động tới chức năng ánh xạ trên bản đồ GAE?
Làm cách nào để thực hiện việc này? Tôi không thể thấy bất cứ nơi nào trong tài liệu hướng dẫn cách xử lý động trong thời gian chạy để lập bản đồ và giảm.
class MatchProcessing(webapp2.RequestHandler):
def get(self):
requestKeyID=int(self.request.get('riderbeeRequestID'))
userKey=self.request.get('userKey')
pipeline = MatchingPipeline(requestKeyID, userKey)
pipeline.start()
self.redirect(pipeline.base_path + "/status?root=" + pipeline.pipeline_id)
class MatchingPipeline(base_handler.PipelineBase):
def run(self, requestKeyID, userKey):
yield mapreduce_pipeline.MapreducePipeline(
"riderbee_matching",
"tasks.matchingMR.riderbee_map",
"tasks.matchingMR.riderbee_reduce",
"mapreduce.input_readers.DatastoreInputReader",
"mapreduce.output_writers.BlobstoreOutputWriter",
mapper_params={
"entity_kind": "models.rides.RiderbeeRequest",
"requestKeyID": requestKeyID,
"userKey": userKey,
},
reducer_params={
"mime_type": "text/plain",
},
shards=16)
def riderbee_map(riderbeeRequest):
# would like to access the requestKeyID and userKey parameters that were passed in mapper_params
# so that we can do some processing based on that
yield (riderbeeRequest.user.email, riderbeeRequest.key().id())
def riderbee_reduce(key, values):
# would like to access the requestKeyID and userKey parameters that were passed earlier, perhaps through reducer_params
# so that we can do some processing based on that
yield "%s: %s\n" % (key, len(values))
Trợ giúp xin vui lòng?
FYI ... ở đây là làm thế nào để gửi dữ liệu đến một công việc trong Java - http: // www. thecloudavenue.com/2011/11/passing-parameters-to-mappers-and.html –
Hmmm. Liên kết mà bạn cung cấp cho các điểm đến nội dung của Hadoop. Điều này là dành cho GAE MapReduce ... –