この記事では、JSONファイルからTreasure Dataにデータをインポートする方法について説明します。
お使いのコンピュータにToolbeltをインストールしてください。Toolbeltには、当社のbulk loaderプログラムが含まれています。
インストール後、tdコマンドがコンピュータで使用できるようになります。ターミナルを開き、tdと入力してコマンドを実行してください。
JAVAがインストールされていることを確認してください。
td import:jar_updateを実行して、bulk loaderの最新バージョンをダウンロードします。
$ 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/javaTreasure 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.data.jsonというファイルがあり、その内容が次の例のようになっている場合:
$ head -n 1 data.json
{"host":"224.225.147.72","user":"-","method":"GET","path":"/category/electronics","code":200,"referer":"-","size":43,"agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)","date_time":"2004-03-07 16:05:49"}次のコマンドを実行してJSONファイルをアップロードします:
$ td db:create my_db
$ td table:create my_db my_tbl
$ td import:auto \
--format json \
--time-column date_time \
--time-format "%Y-%m-%d %H:%M:%S" \
--auto-create my_db.my_tbl \
./data.jsontd import:autoは、無効な行をチェックするためにMapReduceジョブを実行するため、最低でも1~2分かかります。 |
| --- |
上記のコマンドでは、次のことを前提としています:
- データファイルは
data.jsonという名前で、現在のディレクトリにある(./data.json) - JSON形式では通常、列名が指定されます。指定されていない場合は、
--columnsオプションで列名を指定する必要があります(オプションで--column-typesオプションで列の型を指定することもできます)。または、ファイル内の各列に対して--column-typesを使用します。 - 時刻フィールドは"date_time"という名前で、
--time-columnオプションで指定されています - 時刻フォーマットは
%Y-%m-%d %H:%M:%Sで、--time-formatオプションで指定されています
ネストされたJSONレコードは、HiveのネイティブUDF関数であるget_json_objectまたはPrestoのネイティブJSON関数を使用して解析できます。ただし、追加のCPUパフォーマンスオーバーヘッドを避けるために、フラットなJSON構造を維持することをお勧めします。