Skip to content
Last updated

AWS S3向けレガシーバルクインポート

この記事では、Amazon S3からTreasure Dataにデータを直接インポートする方法について説明します。

バルクインポートのインストール

まず、バルクローダープログラムを含むToolbeltをお使いのコンピューターにインストールします。

ダウンロード

インストール後、お使いのコンピューターにtdコマンドがインストールされます。ターミナルを開いてtdと入力してコマンドを実行してください。また、javaもインストールされていることを確認してください。td import:jar_updateを実行して、最新バージョンのバルクローダーをダウンロードします:

$ td
usage: td [options] COMMAND [args]
$ java
Usage: java [-options] class [args...]
$ td import:jar_update
Installed td-import.jar 0.x.xx into /path/to/.td/java

認証

Treasure Dataアカウントにログインします。

$ td account -f
Enter your Treasure Data credentials.
Email: xxxxx
Password (typing will be hidden):
Authenticated successfully.
Use 'td db:create db_name' to create a database.

Amazon S3からのデータインポート

バルクローダーは、Amazon S3に保存されたファイルから、サポートされている3つのファイル形式でデータを読み取ることができます:

  • CSV(デフォルト)
  • JSON
  • TSV

Amazon S3に次の内容のdata.csvというファイルがあるとします:

"host","log_name","date_time","method","url","res_code","bytes","referer","user_agent"
"64.242.88.10","-","2004-03-07 16:05:49","GET","/twiki/bin/edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables",401,12846,"",""
"64.242.88.10","-","2004-03-07 16:06:51","GET","/twiki/bin/rdiff/TWiki/NewUserTemplate?rev1=1.3&rev2=1.2",200,4523,"",""
"64.242.88.10","-","2004-03-07 16:10:02","GET","/mailman/listinfo/hsdivision",200,6291,"",""
"64.242.88.10","-","2004-03-07 16:11:58","GET","/twiki/bin/view/TWiki/WikiSyntax",200,7352,"",""

次のコマンドを実行してCSVファイルをアップロードします:

$ td db:create my_db
$ td table:create my_db my_tbl
$ td import:auto \
  --format csv --column-header \
  --time-column date_time \
  --time-format "%Y-%m-%d %H:%M:%S" \
  --auto-create my_db.my_tbl \
  "s3://s3_access_key:s3_secret_key@/my_bucket/path/to/data.csv"

ファイルの場所は、AWSのパブリックおよびプライベートアクセスキーが埋め込まれたS3パスとして表現されます。

td import:autoは無効な行をチェックするためにMapReduceジョブを実行するため、少なくとも1〜2分かかります。--time-columnに選択したカラムがエポックタイムスタンプ(またはUnix時間)の場合、--time-formatフラグは不要です。

上記のコマンドでは、次のことを想定しています:

  • CSVファイルはAmazon S3上のmy_bucketというバケット内の/path/to/というパス/キー配下に配置されています。
  • ファイルの最初の行にはカラム名が記載されているため、--column-headerオプションを指定しています。ファイルの最初の行にカラム名がない場合は、--columnsオプションでカラム名を指定する必要があります(オプションで--column-typesオプションでカラム型を指定できます)。または、ファイル内の各カラムに対して--column-typesを使用します。
  • 時刻フィールドは"date_time"と呼ばれ、--time-columnオプションで指定されています
  • 時刻形式は%Y-%m-%d %H:%M:%Sであり、--time-formatオプションで指定されています

ワイルドカード

バルクローダーでインポートするソースファイルは、完全なAmazon S3パスまたはワイルドカードを使用して指定できます。以下にいくつかの例を示します:

  • s3://my_bucket/path/to/data* my_bucket/path/to/配下にある、プレフィックスがdataのすべてのファイル
  • s3://my_bucket/path/to/data*.csv my_bucket/path/to/配下にある、プレフィックスがdataで拡張子が.csvのすべてのファイル
  • s3://my_bucket/path/to/*.csv my_bucket/path/to/配下にある、拡張子が.csvのすべてのファイル
  • s3://my_bucket/path/to/* my_bucket/path/to/配下のすべてのファイル
  • s3://my_bucket/path/to/*/*.csv my_bucket/path/の直接のサブフォルダ内にある、拡張子が.csvのすべてのファイル
  • s3://my_bucket/**/*.csv my_bucket/path/のすべてのサブフォルダ内にある、拡張子が.csvのすべてのファイル

詳細については、以下のページを参照してください: