LoginSignup
2
1

More than 3 years have passed since last update.

Treasure Dataでcsvファイルをimportする方法(Mac)

Last updated at Posted at 2019-11-24

背景

Treasure Dataにcsvファイルをimportする際にかなり手こずったのでここに書いておきます。
検索しても一連の流れを書いていてパッとわかりやすいものがなかったので、、、

目的

Treasure Dataにcsvファイルをimportする方法を説明。
今回は自分のやり方を書き記します。

やること

  1. JDKのインストール
  2. embulkのインストール(←今回のやり方では必要ありませんでした。)
  3. TDコマンドのインストール
  4. TDコマンドの実行
  5. 終わり

JDKのインストール

  • JDKが入っているかチェック

ターミナルを開きjava -versionと打ち込みます。
デスクトップ_—_-bash_—_80×24_と_「MACでTreasure_Dataでcsvファイルをimportする方法」を編集_-_Qiita.png
↑の場合はインストールされていません。

  • JDKのインストール

ちなみに、バージョン8より上はまだ対応していないので気をつけましょう。
バージョン:Java SE 8
Product:Mac OS X x64
を選択しましょう。
https://www.oracle.com/technetwork/java/javase/downloads/index.html?ssSourceSiteId=otnjp

Java_SE_Development_Kit_8_-_Downloads.png

クリックするとアカウント認証を求められるので持ってなければ作成しましょう。
過去バージョンをインストールする際には必要みたいです。

Oracleログイン_-_シングル・サインオン.png

  • では、インストールされていることを確認しましょう。

デスクトップ_—_-bash_—_80×24_と_「MACでTreasure_Dataでcsvファイルをimportする方法」を編集_-_Qiita.png

embulkのインストール

下記のコマンドをターミナルに打ち込めばOKです。
curl --create-dirs -o ~/.embulk/bin/embulk -L "http://dl.embulk.org/embulk-latest.jar"
chmod +x ~/.embulk/bin/embulk
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
embulk gem install embulk-output-td

詳細は公式ドキュメントにあるのでどうぞ。
https://support.treasuredata.com/hc/en-us/articles/360001495428-Bulk-Import-from-CSV-files

TDコマンドのインストール

↓TDコマンドを使用するためにはこちらをインストールして初期設定が必要です。(初期設定はここでは割愛)
https://toolbelt.treasuredata.com/

TDコマンドの実行

↓TDコマンドの公式ドキュメントになります。
https://docs.treasuredata.com/articles/td-cli

では一気に駆け抜けてコマンドだけ書いてしまいます。
1. td table:partial_delete <DB名> <Table名> --from <UDF形式のtime> --to <UDF形式のtime>
  →テーブルに余分なデータがある時はtimeを指定して削除します。
2. td import:list
  →いま登録されているsession一覧を見ることが出来ます。
3. td import:create <session名> <DB名> <Table名>
  →これでsessionを作成します。
4. td import:prepare <csvファイル> --format csv --columns <カラム名>,<カラム名>,・・・ --time-value <UDF形式のtime> -o parts/
  →ファイルを圧縮分割してmsgpackに変換する。timeカラムがない場合はベタ打ちで指定する。
5. td import:upload <session名> <分割ファイルのパス>
  →先程の変換したファイルをアップロードする。
6. td import:perform <session名>
  →TDで処理を実行します。
7. td import:commit <session名>
  →successになったらcommitをします。
8. td import:delete <session名>
  →commitまで完了したらsessionを削除しましょう。

初めて触る際はtd import:listを使って都度確認することで現状のステータスが把握しやすいのでおすすめです。

終わり

個人的な躓きポイントだったのは
1. JDKのバージョン8までしか対応していなかったこと。
  →そうとは知らずに最新バージョンをインストールして動かずあわあわしてました。
2. いい感じに情報がまとまっているブログなどが少ないこと。
  →ただcsvファイルをimportしたいだけだったのに、かゆい所に手が届かない。。。
3. csvファイルにtimeカラムがないパターン。
  →今回はuser_idをテーブルにimportしたかっただけなので、指定の仕方がよくわからず苦労しました。

ということでcsvの限定的な話をしてしまいましたが、どこかのだれかの役に立つことができれば幸いです。

2
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1