1

GoogleAppEngineに50,000以上のエンティティを持つモデルがあります。mapreduceまたはその他の操作を作成して、50,000以上のエンティティすべてを反復処理し、モデルのメソッドの結果をテキストファイルにエクスポートしたいと思います。終わったら、テキストファイルをダウンロードしたいと思います。

Google App Engineでこれを行う最も簡単な方法は何ですか?すべてのエンティティを繰り返し処理し、expert_data()の結果を共通のファイルに書き出す必要があります。

#Example model
class Car(db.Model):
    color = db.StringProperty()

    def export_data(self):
        return self.color
4

5 に答える 5

4

mapreduce API: https://developers.google.com/appengine/docs/python/dataprocessing/を使用します。また、Blob を作成してからその BLOB をダウンロードするために使用できる BlobstoreOutputWriter もあります。

Dave の提案によると、ここに例があります: http://code.google.com/p/appengine-mapreduce/source/browse/trunk/python/demo/main.py#264

于 2012-05-23T16:20:32.533 に答える
2

この種のことは、リモート API を使用して行うのが最も簡単だと思います。そうしないと、データをブロブストアに保存し、完了したらエクスポートする必要があります。

リモート API は、appengine 自体で実行するほど高速ではありませんが、はるかに簡単であることは確かです。

于 2012-05-23T16:02:29.783 に答える
0

データストア バックアップを介して Google Cloud Storage にエクスポートし、ダウンロードします。

http://gbayer.com/big-data/app-engine-datastore-how-to-effectively-export-your-data/

これは、他の方法よりもはるかに高速に見えます。私はそれを自分で試していません。

于 2013-02-17T00:09:49.070 に答える
0

ファイルにエクスポートするだけで、すべてのエンティティが必要な場合は、appengine バルク ローダーを使用できます

appcfg.py download_data を参照してください

https://developers.google.com/appengine/docs/python/tools/uploadingdata

再試行スロットリングスレッドなどを処理します

于 2012-06-01T04:24:58.653 に答える
0

私はこれを別の方法で行います - そして誰かがここに弱点があるかどうか教えてください.

タスク キューとカーソルを使用します。最初の 1000 件程度の結果に対してクエリを実行し、実験的な blobstore プログラム書き込み API を使用してデータを blobstore ファイルに出力します。次に、カーソルを使用して自分自身を再スケジュールし、完了するまで、後続の反復ごとにファイルに追加し、カーソルでクエリを取得し続けます。

これは遅いかもしれませんが、実行中のアプリに顕著な影響を与えることはありません。また、mapreduce とは異なり、無数のインスタンスを生成せず、実際の費用がかかる可能性もありません。おそらく、追加のインスタンスが 1 つ生成されることさえありません。

于 2012-05-31T23:17:32.377 に答える