JupyterLab×Spark

<タイトル> JupyterLab×Spark

2025年06月11日 2025年06月13日 カテゴリ: 環境構築

#Spark学習用の環境構築(Spark×Jupyter)

大規模なデータ処理を扱う場合、分散処理を実行する用途としてSparkは広く利用されている。ローカルPCで大規模なデータ処理を扱うのには限界があるため、AWS等のクラウド上でデータ処理するのが望ましい。つまり、Sparkスクリプトの実装とテスト等はローカルPC側で検証し、本番はクラウド上でコードを走らせるのが良いはず...

#ディレクトリ構造#

myspark

  - Mount_Directory     # Jupyter側のマウント先ディレクトリ(任意の命名)
  - docker-compose.yml  # 立ち上げ用($Docker-compose up -d)
  - Dockerfile          # 環境構築(Spark×Jupyter)
  - requirements.txt    # 利用するライブラリ(Spark含む)

#Docker-compose.yml

services:
  datasciense:
    container_name: myspark
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8888:8888"   # JupyterLab
      - "4040:4040"   # Spark Application UI(※ジョブを実行している間のみ起動する※)
    volumes:
      - ./Mount_Directory:/Mount_Directory

    environment:
      - LANG=ja_JP.UTF-8
      - TZ=Asia/Tokyo
    command: jupyter lab --ip=0.0.0.0 --allow-root --NotebookApp.token=''

#Dockerfile

FROM ubuntu:22.04

ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

## 必要なパッケージ(apt-get)
RUN apt-get update && apt-get install -yq --no-install-recommends \
  python3-pip \
  python3-dev \
  sudo \
  vim \
  curl \
  wget \
  unzip \
  tzdata \
  git \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

## 必要なパッケージ(pip) 
COPY requirements.txt .
RUN pip install --upgrade pip && \
    pip install --break-system-packages -r requirements.txt

## Spark のインストールと環境変数設定{#2025-06:'3.5.6'}
## https://archive.apache.org/dist/spark/
RUN wget -qO- https://archive.apache.org/dist/spark/spark-3.5.6/spark-3.5.6-bin-hadoop3.tgz | tar xz -C /opt/
RUN ln -s /opt/spark-3.5.6-bin-hadoop3 /opt/spark
ENV SPARK_HOME=/opt/spark
ENV PATH=$SPARK_HOME/bin:$PATH
ENV PYSPARK_PYTHON=python3
ENV PYSPARK_DRIVER_PYTHON=jupyter
ENV PYSPARK_DRIVER_PYTHON_OPTS="lab --ip=0.0.0.0 --allow-root --LabApp.token=''"
  
## Jupyter NotebookのPDF出力を日本語に対応する
RUN sed -i 's/\\documentclass\[11pt\]{article}/\\documentclass\[xelatex,ja=standard\]{bxjsarticle}/' \
   /usr/local/share/jupyter/nbconvert/templates/latex/index.tex.j2  

## JupyterLab 作業ディレクトリ
WORKDIR /Mount_Directory
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--allow-root", "--LabApp.token=''"]

#requirements.txt

# 共通 (JupyterLab)
jupyterlab==4.2.5
jupyterlab-language-pack-ja-JP

# データサイエンス
numpy==2.1.1
pandas==2.2.2
matplotlib==3.9.2

# pyspark{#2025-06:'3.5.6'} https://pypi.org/project/pyspark
pyspark==3.5.6

#動作確認用コード#

from pyspark.sql import SparkSession

# Sparkセッションの作成
spark = SparkSession.builder.appName("CountryCount").getOrCreate()
# Sparkセッションのバージョン確認
print(spark.version)
  • Jupyter側から上記のコードを実行してライブラリを起動させると、Sparkのバージョンが確認できる...
  • また、Sparkを起動後から「http://localhost:4040」GUI画面から管理することができる...


コメント(一覧)

コメント(入力画面)

空港MAP(#WIKI)
※現在の時刻 週間天気予報 (東京)
バックナンバー(年別)