Skip to content
Last updated

JSONファイルからのレガシーバルクインポート

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

Bulk Loaderのインストール

お使いのコンピュータに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/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.

JSONからデータをインポートする

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.json
td 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レコードの処理

ネストされたJSONレコードは、HiveのネイティブUDF関数であるget_json_objectまたはPrestoのネイティブJSON関数を使用して解析できます。ただし、追加のCPUパフォーマンスオーバーヘッドを避けるために、フラットなJSON構造を維持することをお勧めします。