一定要自己踢過一次鐵板才能學會 (二)
經過一夜的蒐集資料, 看了 Google I/O 的影片, 覺得用 MapReduce 就是正解啦. 用法很簡單 Step 1 Download最新的 MapReduce , 在local自己的appengine程式的地方執行. svn checkout http : //appengine-mapreduce.googlecode.com/svn/trunk/python/src/mapreduce Step 2 修改app.yaml, 固定都是加上下列這段code. - url: /mapreduce(/.*)? script: mapreduce/main.py login: admin Step 3 新增一個mapreduce.yaml檔 mapreduce: - name: Count the number of entities mapper: input_reader: mapreduce.input_readers.DatastoreInputReader handler: jobs.process params: - name: entity_kind default: main.Report 第一個name, 就是之後會顯示在mapreduce的網頁介面上的job name. input_reader, 目前有四種reader可以選, 詳情可見 這裡 . 主要是從DataStore裡抓, 或是從BlobStore裡抓, 或是從zip檔裡抓資料. handler, 指定之後會被MapReduce call的function. 這裡有點tricky, 文件寫得不是很清楚, 查了MapReduce的source才知道要填什麼. 簡單的說它可以吃三四種格式, 會試著用不同的方法去找到對應的python檔, class定義跟function定義. 最簡單的方法就是"file.function". 像這裡就是有一個叫jobs.py的檔, 裡面有一個process(). 之後MapReduce就會一直重覆地呼叫這個function. param, 這裡可以指定一些參數, 最重要的是entity_kind這個欄位, 這裡指定了預設值是main.py裡定義的R...