ホーム > タグ > GAE

GAE

GAEのBigtableへのデータのインポートとエクスポートをやってみた

どうも、うしねずみです。

Google App Engineで使えるデータベースはBigtableというのですが、このデータベースへのデータのインポートとエクスポートをやってみました。結論から言うと、日本語を含まないデータのインポートだけしかできませんでした。以下にまとめてみます。

基本的にはGoogleのスタートガイドのページのここに解説されています。だたし、気をつけなければいけないのは、データのインポートおよびエクスポートは英語版のSDKでしかできません(2009年8月3日現在)。どうやらSDKの1.2.1から加わった機能のようです。日本語のダウンロードページで公開されているのは1.2.0なので指示通りのコマンドを入れてもエラーを吐かれます。ですので英語のダウンロードページから最新版(2009年8月3日現在は1.2.3)をダウンロードしてインストールしてください。

これであとは解説ページ通りに行えば行けます。まだローカル環境でしか試してないのですが、1087件のレコードをインポートすることに成功しました。ただしこれは日本語を含まない場合のみで、日本語を含むデータでは

[ERROR   ] Error in worker [Thread-6]: ‘ascii’ codec can’t decode byte 0x82 in p
osition 0: ordinal not in range(128)

というエラーが出てアップロードできませんでした。
また、エクスポート機能についてはGAEのサイトで以下のように言及されています。

2009 年 4 月: Python SDK リリース 1.2.1 には、データのアップロード機能と類似した、データのダウンロード機能の初期バージョンが含まれています。この機能はまだ appcfg.py では使用できませんが、試したい場合は、bulkloader.py をご覧ください。マニュアルを含めたこの機能の完全版を、今後の SDK バージョンでリリース予定です。

さっそくSDKの中からbulkloader.pyというファイルを探して覗いてみました。
【注意】:google_appengineの中には同じ名前のファイルが複数個所にあって分かりにくいですが、ここで言っているのは
\google_appengine\google\appengine\tools
にあるbulkloader.pyです。

この中で定義されているExporterというクラスがLoaderに対応するクラスのようです。さらに見ていくと、appcfg.py(これも上記のbulkloader.pyと同じフォルダ)の中のPerformUploadという関数の近くに(2038行付近)PerformDownloadという関数が定義されています。アップロードには’upload_data’というコマンドが紐付いていますが、ダウンロードには’download_data’が紐づけられているようです(2267行付近)。

つまり、データのアップロードの時に作ったローダクラス(Googleの説明だとalbum_loader.pyになっている)の中のLoaderをExporter、loadersをexportersに書きえてやれば動きそう。
アップロード時のコマンドは(ローカルでテストする場合は)以下でしたが

エクスポートの方では以下のようにすれば動くはず。

ちなみにローカルでテストするときはちゃんとGAEのローカルサーバ(dev_appserver.py)を動かしておいて下さいね。
いや、しかし動かないんだこれが。
 KeyError: ‘Album’
と言われてしまう。「Album」なんて種類のデータは無いんだと。いや、さっきアップロードしましたよっ!データベースから種類「Album」のデータの最初の100件を表示するテストページも問題なく動作してますよ!

なんでだろー。
知ってる方いましたら教えてくださいー。

結局、日本語を含まない場合のインポートだけしかできませんでした。
データのエクスポートができないままでは新規利用者にとって本格導入したい人も二の足を踏みます。もし他のプラットフォームに移行したくなっても、データが取り出せなきゃどうしようもないので。Googleさん、早く正式対応してください。それからドキュメントを…orz

Google App Engineを使ってみた

どうも、うしねずみです。

以前まで「クラウド導入日記」という主題とともにクラウドを使ってみた情報を書いてましたが、やめました。

さて、今回はGoogle App Engineを使ってみたというお話です。
使ってみての感想ですが、何と簡単なことか!!! いや、ホントですよ。Googleの差し金じゃないですよ。

簡単な理由の一つに、スタートガイドの分かりやすさがあります。このスタートガイドを読みながら手順通りにやっていくと、簡単にアプリ公開までたどり着きます。そうですね、特に急いだわけでもなく、2時間くらいで済んだでしょうか(というか時間計ってなかったし覚えてないけど)。とくに深読みせず、テストコードをコピペでアップロードすれば30分で終わりそうです。

ということで今回私がここに手順をダラダラ書いてもGoogleのスタートガイドよりわかりやすくはならないと思いますので、使ってみたい人はぜひGoogleの方を訪れてください。

ちなみGAE(Google App Engine)では今JavaとPythonが使えますが、私はPythonを選びました(Javaの方が慣れているが)。理由はPythonの方が一年ほど(?)早くリリースしているので、Pythonの方が資料(手掛かり)が充実していると思ったからです。比べたわけではないですが「やっぱりPythonでよかった」と思うほど転がっている資料も多くなかったし、一番役に立ったGoogleのスタートガイドにはどちらも同じくらいのチュートリアルがあるので大差ないかと。私が気付いた限りでは、Bigtable(Googleのデータベース)へのデータのインポートの手順はPythonの方しかドキュメントおよびツールが準備されていないと思います(2009年8月2日現在)。

Amazonの時も思いましたが、クラウドサービスの導入って意外と簡単です。もちろんちゃんと使えるようなものを作るまでは大変ですが、それ以外の無駄な手間(クラウド自体の設定作業とか)は少ないにこしたことは無いので。

みなさんも、Let’s クラウドライフ!

クラウド導入日記(1) ~Google App Engineに登録してみる~

どうも、うしねずみです。

最近趣味で走らせているプロジェクトがありましてそこでWebサービスを作ろうという話になっています。試算してみるとかなりサーバーのリソースが必要だということが分かりましてさらにユーザ数とその増加のペースが読めないということになりました。
共用じゃないレンタルサーバー借りると高いし急速なユーザ増加に対応するのは骨が折れそう。

これはもうね。
世の流行りのね。
クラウド使うしかないよね。
っていうか使ってみたいだけかも。

まあ何はともあれやってみようということでしばらくクラウド導入の話を書いていこうかと思います。かなりスローペースで進むとは思いますが気長に見守ってください。

 初回は「Google App Engine(GAE)への登録」です。

 1、まずは、何はともあれGAEのサイトにアクセスしましょう!
そして右上の「スタートガイド」のところからログインを選択します。
すると「Googleアカウントでログインしてくださいよー」と言われるので、ログイン。
(Googleアカウント持ってない人はそれを作るのが先です)
すると次のような画面に飛びます。

google app engine 1

2、Create an Applicationボタンをクリック
「Getting Started Guide」とか「FAQ」とか「Developer’s Guide」とか読んで勉強してくださいねって書いてある。後で勉強することにして、Create an Applicationボタンをクリック。 

3、携帯メールを使って個人認証
GAEのアプリケーションを作るには確認コードが必要です。国と携帯のキャリア(ドコモとかauとか)を選んで携帯の番号を入れてください。SMSを使って確認コードを送ります。(確認コードで)認証するのは(最初の)一回だけです。
って書いてある。
google app engine 2

「携帯の番号入れろ」って言われているのに「Username」と書いてあって何を入れたらいいか迷う。
とりあえず自分の名前をローマ字表記で入れてみた。
すると
「Mobile NumberかUsernameを入れなきゃだめでしょ!」
って怒られる。
google app engine 3

いや、Usernameって何すか。。。って思いながら携帯の番号を入れてみる。
すると
「携帯の番号@ezweb.ne.jpにメール送りました。確認してください。数分しても届かなかったらもう一度トライ!」
的なことを言われる。
google app engine 4

いや、「携帯の番号@ezweb.ne.jp」に送っても届かんだろ、と思ったので再トライ。
つまり、携帯のメールアドレスの@より前の部分(@は含まない)を入れるのが正解のようです。

4、確認コードを入力
そしたら一瞬で携帯にメールが来たのでそれに書いてある確認コードを前の図の「Enter Accout Code:」ところに入れてsendボタンを押す。

5、Application ID とApplication Titleを決める
好きなIDを入れてみてCheck Availabilityボタンを押して空きIDかどうかをチェック。空いてたらApplication Titleも入力して、規約を読んで「I accept these terms」をチェックしてSaveボタンを押す。
google app engine 5

6、無事完了!
以下のような画面が出れば無事完了。
google app engine 6
dashboadを押すと自分のダッシュボードに飛びます。

今回はこんなぐらいで。
次はAmazon EC2の方も登録してみたいと思います。

人気ブログランキングへ

Home > Tags > GAE

Search
Feeds

Return to page top