Treasure DataのBulk importを行う時のポイント

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

ここ一ヶ月弱、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]

td import:auto --helpより

これを行わないで実行したところ、最初の列が空でimportされたケースがありました。(詳細は不明なので、分かり次第アップします。)

またint, longなどの型を明示的に指定したほうが、パフォーマンスが良いようです。

2.圧縮処理の並列実行を指定する

import時、対象のファイルから圧縮ファイルを作成する処理が行われます。 これの並列実行を、以下のオプションで指定できます。

--prepare-parallel NUM           prepare in parallel (default: 2; max 96)

td import:auto --helpより

ここで指定する数は、一般的にはCPUのコア数と同数とするのが良いようです。

また、アップロードするファイルを一つではなく「Dirname/*.csv」 のように複数ファイルを指定するのが、パフォーマンスには良いようです。

3.アップロード処理の並列実行を指定する

今度はアップロードするときの並列事項です。 以下のオプションで指定できます。

-parallel NUM                   upload in parallel (default: 2; max 8)

td import:auto --helpより

まとめ

ここ最近知った事、気づいた事を簡単に纏めてみました。 まだまだ知らない方法などもあるかもしれませんが、Treasure Data Tools Beltは「td import:auto --help」でヘルプが出るので 色々と試してみるのもいいかもしれません。