ターミナルからTreasureDataにcsvファイルをアップロードする方法
はじめに
今までビックデータを扱う仕事をしてきたのにTreasure Dataを触ったことがありませんでした。
csvファイルをアップロードするだけでも悩んでしまいました。
検証環境
$ uname -moi
x86_64 MacBookPro10,1 Darwin
$ bash -version | head -n 1
GNU bash, バージョン 5.0.11(1)-release (x86_64-apple-darwin18.6.0)
アップロードの手順について
以下のサイトが参考になりました。
Embulkを使ってデータをインポートする方法です。
データのインポートのためにいくつか準備しないといけないようですので、順番に設定していきます。
1.Embulkのインストール
パット見た感じ、JRE 1.8が必要であり、セットアップが面相くさそうでした。
せっかくなのでDockerイメージを作成して公開してみました。
したがって、以下のDockerイメージを利用していただければインストールを省略できます。次へ進みましょう。
genzouw/embulk-output-td
2.seed構成ファイルを作成
Treasure Dataへデータをインポートするための設定ファイルは、"seed configuration file"と呼ばれるファイルから自動生成させることができます。
まずは"seed configuration file"を作成します。
in:
type: file
path_prefix: /workdir/your_data.csv
out:
type: td
apikey: **************your_td_apk_key****************
endpoint: api.treasuredata.com
database: your_db_name
table: your_table_name
mode: replace
default_timestamp_format: '%Y-%m-%d %H:%M:%S'
seed.ymlの細かい設定についてはここでは取り上げません。
apikey
の部分はTreasure Dataの設定ページから取得してください。database
/table
についても自分のデータベース名、テーブル名を設定しましょう。path_prefix
については、Dockerコンテナ内のパスを指定しなければならない点に注意しましょう。(後述)
アップロードするcsvファイルも適当に作っておきましょう。
cat <<EOF > ./your_data.csv
a1,b2,c3,d4,e5,f6
1,2,3,4,5,6
2,3,4,5,6,7
EOF
3.load.ymlの生成
seed.yml
からload.yml
を生成します。
# アップロードしたいファイル、seed.ymlがカレントディレクトリに存在していることを確認
$ ls your_data.csv seed.yml
your_data.csv seed.yml
# Dockerイメージを使ってload.ymlを生成
$ docker run --rm -i -t \
-v $PWD:/workdir \
--workdir /workdir \
genzouw/embulk-output-td guess seed.yml -o load.yml
4. ロードジョブの実行
load.yml
は実行ジョブが設定されているファイルとなっています。
これを使って、アップロードジョブを実行しましょう。
# アップロードしたいファイル、load.ymlがカレントディレクトリに存在していることを確認
$ ls your_data.csv load.yml
your_data.csv load.yml
# Dockerイメージを使ってload.yml設定を使ってデータをロード
$ docker run --rm -i -t \
-v $PWD:/workdir \
--workdir /workdir \
genzouw/embulk-output-td run load.yml
この状態でTreasure Dataのデータを確認すれば、データがインポートされているはずです。
ひとこと
コマンドラインからデータロードさせるための仕組みもできました。
ディスカッション
コメント一覧
まだ、コメントがありません