Apache Beam インタラクティブ ランナーをJupyterLabで実行する

こんにちは、香田です。

今回はApache Beam インタラクティブ ランナーをJupyterLabで実行する方法を紹介していきます。

事前にローカル環境にDocker Composeが利用できるようにインストールしておいてください。

Apache Beam/JupyterLab 環境のセットアップ

はじめにdocker-composeを利用し、Apache Beam/JupyterLab環境をセットアップしていきます。

下記のような構成で各ファイルを用意します。

$ tree
./
├── Dockerfile
├── docker-compose.yml
└── requirements.txt
  • requirements.txt
apache-beam[gcp,interactive]
  • Dockerfile
FROM jupyter/datascience-notebook:latest

COPY requirements.txt /tmp
RUN pip install -r /tmp/requirements.txt
  • docker-compose.yml
version: "3.8"
services:
  jupyterlab:
    build: .
    container_name: jupyterlab
    ports:
      - "8888:8888"
    environment:
      - JUPYTER_ENABLE_LAB=yes
    volumes:
        - '$PWD:/home/jovyan/work'

Apache BeamがインストールされたJupyterLab コンテナを起動します

$ docker-compose up -d --build

下記を実行しログイン用のtokenを確認します。tokenが表示されるのでコピーします。

$ docker-compose exec jupyterlab jupyter notebook list

http://localhost:8888へアクセスし、コピーしたtokenを貼り付けログインします。

workフォルダへ移動するとホスト側がマウントされているのが確認できるはずです。

Apache Beam インタラクティブ ランナーを実行する

次にNotebookを作成していきます。[File]、[New]、[Notebook]より[Python 3]を選択します。

セルに以降の内容を入力し、それぞれ実行していきます。

Apache beamの各パッケージをインポートします

import apache_beam as beam
from apache_beam.runners.interactive import interactive_runner
from apache_beam.runners.interactive.interactive_beam import *

InteractiveRunnerを使用しパイプラインを作成します

p = beam.Pipeline(interactive_runner.InteractiveRunner())

show()メソッドを使用すると、下記のようにデータが確認できるはずです。

init_pcoll = p |  beam.Create(range(10))
show(init_pcoll)

さいごに

Apache Beam インタラクティブ ランナーをJupyterLabで実行する方法いかがでしたでしょうか。

料金は発生しますが、Google CloudのDataflowでもノートブックとして提供されており、こちらでもApache Beam インタラクティブ ランナーは実行可能です。

Apache Beam ノートブックを使用したインタラクティブな開発

最後までご覧頂きありがとうございます。

SNSでもご購読できます。