UserEngagement_logoUserEngagement_logoUserEngagement_logoUserEngagement_logo
  • 記事を探す
    • ロール別ガイド
      • 管理者向け
      • マーケター向け
      • エンジニア向け
    • 用途から探す
      • 業務効率化・自動化
      • 新規顧客獲得
      • 既存顧客LTV向上
      • 企業DXの推進
    • 機能から探す
      • 顧客データ活用・施策連携
      • セキュリティ
      • データ加工、処理
      • データの可視化
      • 全機能をみる
    • 活用事例を探す
    • 全記事から探す
  • LINK
    • リリースノート
    • プロダクトドキュメント
    • Status Page(Incident情報)
    • Workflowサンプル集(英語)-TreasureBox
  • Academy
ログイン
✕

Custom Scriptの開発準備

  • Home
  • 表示用 Custom Scripts(ガイドページ表示用)
  • Custom Scriptの開発準備
Home 表示用 Custom Scripts(ガイドページ表示用) Custom Scriptの開発準備
2021年3月30日
Categories
  • Custom Scripts(ガイドページ表示用)
  • howto
  • 業務の効率化・自動化(ガイドページ表示用)
Tags
  • Custom Scripts
  • エンジニア向けガイド
  • 業務効率化・自動化

こんにちは、テクニカルサポートエンジニアリングチームの大村 裕です。
今回は最近使用される方が増えてきたように感じるCustom Scriptの開発準備についてご紹介していきたいと思います。

目次
  1. Custom Scriptとは
  2. Custom Script開発で面倒な点
  3. Custom Script開発を楽にするには
  4. Dockerを使用したローカル環境構築
  5. pipを使用したローカル環境構築
続きは会員登録およびログイン後にご覧いただけます。以下からログインしてください。

会員登録・ログイン

Custom Scriptとは

Treasure Workflowから呼びだすことのできるpythonスクリプトです。このpythonスクリプトはDockerコンテナ上で動作し、Workflowの他のタスクから独立して実行されます。このCustom Scriptは大変便利なもので以下のような用途で使うことを想定しています。

  • Treasure Data CDPでまだ用意できていない外部サービスとの連携
  • 複雑なデータ処理を伴うタスクの実行

その他にもpythonプログラムを動作させることでさまざまなことが実現可能となっています。

Custom Script開発で面倒な点

さて、こんな便利そうなCustom Scriptですが単純に開発を行おうとすると非常に面倒です。一般にCustom Scriptを開発する際には以下のような流れで開発することになります。

  1. ローカルPCのお気に入りのエディタでdigファイルを作成する
  2. ローカルPCのお気に入りのエディタでpythonコードを作成する
  3. Treasure Data CDPにtd-toolbeltを使用してアップロード
  4. Treasure Data CDPで実行
  5. 1 or 2 に戻る

(TDコンソールでdigファイルおよびpythonプログラムを作成するというのはtoy exampleは別として現実的ではないので省いています。)
この1-4までの試行の待ち時間が非常に長いという点がCustom Scriptの開発を面倒にしています。折角、pythonというちょっと書いて試すというのに向いているスクリプト言語を使用しているのに、この状況ではストレスが溜ってしまうことになります。

Custom Script開発を楽にするには

このストレスフルな状況を脱する方法は2つあります。 いずれもローカルPCにTreasure Data CDPと同一の実行環境を作って、pythonプログラム単体で実行確認を行うというものです。これによりアップロード&workflow実行というステップを飛ばすことが可能となります。pythonプログラムの単体実行は単純にworkflowから呼び出していた関数をpythonスクリプト内で呼び出すだけですので問題ないとして、Treasure Data CDPと同一の実行環境を作成するやり方は2通りあります。

  • Dockerを使用したローカル環境構築
  • pipを使用したローカル環境構築

それぞれ、長所/短所があるので内容を確認しながら説明していきたいと思います。

Dockerを使用したローカル環境構築

手順としては2ステップのみです。Dockerをインストールして、TD Custom Scriptで使用可能なDocker Imageを指定して起動するだけとなります。 Dockerのインストールに関しましてはDockerのページを参照して頂くとして、TD Custom Scriptで使用可能なImage一覧は以下のものになります。(2020年6月26日時点)

  • Digdag-python:3.7
    • Python 3.7.4
    • pytd version “0.5.0”
    • td-pyspark 19.07
    • URL: https://hub.docker.com/r/digdag/digdag-python
  • Digdag-anaconda3:2019.03
    • continuumio/anaconda3:2019.03
    • pytd version “0.5.0”
    • td-pyspark 19.07
    • URL: https://hub.docker.com/r/digdag/digdag-anaconda3

Dockerをインストールし、上記イメージを使用するだけでCustom Scriptの実行環境とほぼ同じものが使用可能となります。長所としては上記の通り、”簡単に構築ができる”、”Custom Scriptの実行環境とほぼ同じものができる”という点で、短所としてはDocker自体がそこそこ重いアプリケーションのため、”実行が重い”、ローカルPC環境<->Dockerでのファイルのやりとりに工夫がいるという点です。Docker上は別のOSが起動しているため、ホスト側のPCで作成したpythonスクリプトをDocker側に渡すやりかたは様々なものがありますので自分の開発スタイルにあったやり方を見つけるのがいいでしょう。

pipを使用したローカル環境構築

こちらは手順としては3stepとなるのですが、このまま実施してしまうと自分のpython環境がすべてTD Custom Scriptと同一の環境になってしまうのでvenv等と組み合わせるのが良いと思います。

  1. pythonのインストール
  2. pipのインストール
  3. pip+requirements.txtによる環境構築

pythonのインストールやpipのインストールはWeb上にたくさんの情報がありますのでそちらに任せるとして、ポイントとなるのは3ステップ目です。Digdag-python:3.7のrequirements.txt(インストール済みのpythonパッケージ群)を使ってDigdag-python:3.7のDockerイメージと同様のpythonパッケージ環境を構築します。こちらですとDockerと違って普通にpython開発しているのと全くかわらない使用感になりますので、python開発になれている方は楽かもしれません。短所としてはCustom Scriptの実際の実行環境と同一なのはpythonのパッケージ群だけということです。OSなどが異なるという点は注意が必要です。

Digdag-python:3.7のrequirements.txtを以下に載せておきます。

attrs==19.1.0
boto3==1.9.185
botocore==1.12.185
certifi==2019.6.16
chardet==3.0.4
Click==7.0
convertdate==2.1.3
cycler==0.10.0
Cython==0.29.12
decorator==4.4.0
docutils==0.14
ephem==3.7.6.0
fbprophet==0.5
holidays==0.9.10
idna==2.8
ipython-genutils==0.2.0
jmespath==0.9.4
joblib==0.13.2
jsonschema==3.0.1
jupyter-core==4.5.0
kiwisolver==1.1.0
lightgbm==2.2.3
lunardate==0.2.0
matplotlib==3.1.1
msgpack==0.6.1
nbformat==4.4.0
numpy==1.16.4
pandas==0.24.2
plotly==3.10.0
presto-python-client==0.7.0
py4j==0.10.7
pyarrow==0.14.0
pyparsing==2.4.0
pyrsistent==0.15.3
pyspark==2.4.3
pystan==2.19.0.0
pytd==0.5.0
python-dateutil==2.8.0
pytz==2019.1
requests==2.22.0
retrying==1.3.3
s3transfer==0.2.1
scikit-learn==0.21.2
scipy==1.3.0
seaborn==0.9.0
setuptools-git==1.2
six==1.12.0
td-client==0.13.0
td-pyspark==20.2.0
traitlets==4.3.2
urllib3==1.24.3

まとめ

Custom Scriptの実行環境とローカルの実行環境をあわせておくことにより、Custom Scriptの動作確認およびデバッグが非常に楽にできるようになります。 ローカルの実行環境でpython側の動作を確認した後、Treasure Data CDP側でworkflowを含めた動作確認すると非常に効率の良い開発ができると思います。ぜひお試しください。

Custom Scriptに関するドキュメントはこちら

Share
大村 裕
大村 裕

Related posts

2023年6月14日

トレジャーデータPSチームによるダッシュボード構築プロジェクト事例
~トレジャーデータ書籍Appendix~


Read more
2023年5月31日

ダッシュボードの普及と課題
~トレジャーデータ書籍出版記念!一部先行公開~


Read more
2023年4月25日

Cookieに依存せずに広告CV計測を支援する機能「Conversion API」


Read more

Comments are closed.


  • ホーム
  • 個人情報の取り扱いについて
  • 個人情報に関する公表文
  • インフォマティブデータの取扱いについて
  • 会員情報変更
  • 退会手続きはこちら
記事を探す
  • ロール別ガイド
  • 用途別ガイド
  • 機能別ガイド
  • 活用事例
  • 全記事一覧
Community
  • Treasure Academy
LINKS
  • リリースノート
  • プロダクトドキュメント
  • Status Page(Incident情報)
  • Workflowサンプル集(英語)-TreasureBox
Copyright 2022 Treasure Data, Inc.
    ログイン