appengine-mapreduce(python) を使ってみた。 噂のappengine-mapreduceを使ってみました。 丁度cronで回さないと行けない処理があったので、こちらを参考にさせていただきました。 #appengine MapReduceを使ってみた - スティルハウスの書庫 上記には概要やらメリット/デメリットもまとめられています。 とりあえず回してみる。 手順は本当に簡単です。 処理を実行したいデータストアを持つアプリケーションに SDK 処理を書いた.py mapreduce.yaml app.yamlを変更 これだけです。 SDKをチェックアウト アプリのディレクトリ以下で svn checkout http://appengine-mapreduce.googlecode.com/svn/trunk/python/src/mapreduceするだけ。 ap
Google I/O 2010で発表されたApp Engine新機能のひとつが「AppEngine-MapReduce(Mapper API)」です。このブログでもいろいろ憶測に憶測を重ねてきましたが、ついにApp EngineでMapReduceサポート!!…なんですが、しかし発表されたセッション会場もいまいち盛り上がりに欠ける感じ^^;; 理由は後述しますが、ともあれ(jw)、やっとのことApp EngineでもMapReduceがサポートされたわけです。 リンク集 appengine-mapreduce - Google Code Google I/O 2010 - Batch data processing with App Engine - YouTube Live Wave: Batch data processing with App Engine Exploring the
DataStoreとは 本記事内のDataStoreは、GoogleAppEngineのデータストアのことを指す。GoogleAppEngineは、ファイルの書き込みが一切できないため、DataStoreを使う以外にデータを永続化する方法はない。短期であればmemcachedに保存することもできるが、memcachedに保存されたデータは保存期間が保証されないため、一時データをキャッシュして高速化(or 負荷軽減)以外には実質つかえない。 DataStoreの特徴 DataStoreの特徴は、スケーラブルであること。データ数が1万件でも1億件でもほぼ同じ時間で結果が返ってくる(らしい)。ただし、通常のRDBでは簡単にできる操作がDataStoreでは非常に重い処理だったり、不可能だったりするので注意。 苦手な処理 件数のカウント ⇒件数のカウントは、データ全体を取ってくる処理に近いだけの処
ここ数ヶ月、Google App Engine/Pythonを使い、初めてちょっとしたものを作ってみているのだけど、開発初期から知っておけばよかったなー、と思うノウハウ/tips的なものをずらずらと書いてみる。 基本的な環境設定は、 以前書いた まま。 0. 公式ドキュメントを良く読む 言うまでもなく、だけど、 マニュアル はもちろん、 この辺 の下の読み物も、流し読みだけでもしておいたほうがいい。 datastoreとmodel的なところ 1. key nameを使いこなす key nameは、レコードの作成時に指定できる(RDBでいう)primary keyの別名みたいなもの。primary key自体は自動的で作成されるので開発者が指定できるのはkey nameだけ。 key nameをうまく使うことで、datastoreを使いやすくすることができる。特にdatastore上で"un
Google IO 2011あわせのアップデートで、Google APP EngineにBackendが導入されました(Python/Java)。 これはbackendと呼ばれるずっと立ち上がりっぱなしのインスタンスを提供する仕組みで、時間制限がありません。そのため、大規模、あるいは長時間かかるような処理に向いています。 Backendsの設定から処理の受付まで Backendsの設定から起動までは次のようになります 設定ファイル(backends.yaml/xml)で各backendを設定 アプリをデプロイ(backend内の処理はアプリ内の処理の一部という形) appcfgから起動 各backendに割り振られたURLにリクエストする appcfgにはこのほかに停止や削除と言った管理用のコマンドがあります(Python/Java) Backendsの設定 前述したとおり、backend
Google App Engine SDK 1.6.0がpython2.7に正式対応したのでhello worldしてみました。 何が変わったの? threadsafeをONにするとマルチスレッドで動くようになり、インスタンスが節約できます。 サードパーティライブラリがpython2.7用にバージョンアップ、追加されました。 python2.5から移行する場合は新バージョンへ対応させる必要が生じる場合があります。 必要なモノ python2.7 Google App Engine SDK 1.6.0 (GAE SDK 1.6.0) ダウンロード – Google App Engine – Google Code High Replication Datastore(HRD) Master/Slave Datastore(M/S Datastore)から切り替える場合は新しいapp_i
Matcher APIはあるオブジェクトが登録したクエリーにマッチするかをスケーラブルにチェックしてくれるサービスです。 クエリーが既に登録しているから、あるオブジェクトが一つ一つの登録したクエリーにマッチするかが他のクエリーに依存しないので、 Map-Reduce で簡単に平行で処理を分担してスケールできる。 何に使うか これが少し分かり辛いところかもしれないので、少し説明します。クエリーを未然に登録するので、 Prospective Search (プロスペクティブ検索、展望検索、予測検索?) と言います。 みんな使っている、普段の検索は、Retrospective Search (遡及検索) です。クエリーが決まってないので、データをインデクスを作って、後でユーザーがデータを クエリーする形になっています。 プロスペクティブ検索は、未然にクエリーを決めて、そのクエリーにマッチするデー
DjangoのTemplateでは、{% for a in list %}...{% endfor %}を使うことで、リストの内容を順番に処理していくことができます。 それと同じように、ディクショナリに登録されている内容を順番に表示させようと考えたのですが、 Google App Engine のDjangoのバージョンがやや古いためか、{% for key, value in my_dic %} というここに書いてあった書き方は使えませんでした。 そこで、なんとかならないかといろいろと試行錯誤した結果、動作する方法にたどりついたのでここにメモとして残しておきます。 リクエスト処理のメソッドの中で、my_dicという名前の辞書が登録されているとします。 すると、以下のように書けば、この辞書の内容が一覧表示できます。 <table border="1"> <tr><th>Parameter<
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く