Treasure DataのBulk importを行う時のポイント
はじめに
ここ一ヶ月弱、Treasure Dataへデータを送ったり、取得したりするアプリを開発しているt.hondaです。 今回はタイトル通り、Treasure DataにデータをBulk importする時に注意したいポイントについて書きたいと思います。
アプリからBulk importするときは、前回の記事に書いたようにコマンドを投げて行っているので、コンソールからBulk importを行う際にも当てはまるポイントだと思います。
実行環境について
Treasure Data Tools Beltのバージョン0.11.2を使用しています。また以下は、基本的には「td import:auto」コマンドを使用しています。
ポイント
1.対象テーブルのカラム名、型を明示する
「td import:auto」コマンドの以下のオプションで、importするデータのカラム名、型を指定することができます。
--columns NAME,NAME,... column names (use --column-header instead if the first line has column names) --column-types TYPE,TYPE,... column types [string, int, long, double]
これを行わないで実行したところ、最初の列が空でimportされたケースがありました。(詳細は不明なので、分かり次第アップします。)
またint, longなどの型を明示的に指定したほうが、パフォーマンスが良いようです。
2.圧縮処理の並列実行を指定する
import時、対象のファイルから圧縮ファイルを作成する処理が行われます。 これの並列実行を、以下のオプションで指定できます。
--prepare-parallel NUM prepare in parallel (default: 2; max 96)
ここで指定する数は、一般的にはCPUのコア数と同数とするのが良いようです。
また、アップロードするファイルを一つではなく「Dirname/*.csv」 のように複数ファイルを指定するのが、パフォーマンスには良いようです。
3.アップロード処理の並列実行を指定する
今度はアップロードするときの並列事項です。 以下のオプションで指定できます。
-parallel NUM upload in parallel (default: 2; max 8)
まとめ
ここ最近知った事、気づいた事を簡単に纏めてみました。 まだまだ知らない方法などもあるかもしれませんが、Treasure Data Tools Beltは「td import:auto --help」でヘルプが出るので 色々と試してみるのもいいかもしれません。