【AWS】AWS Glue ~ ローカル環境を作成する / Glue v3.0版 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2019/11/10/205535

で、ローカル環境に、 Glue v1.0/v2.0 の動作環境を作成した。

 以下の関連記事でGlue Version 3.0 が紹介したが、

https://dk521123.hatenablog.com/entry/2021/09/18/232556

どうも、AWS公式においても、Glue Version 3.0のローカル環境が
できているとの噂を聞いたので、メモ。

https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-etl-libraries.html

より抜粋
~~~~~~
AWS Glue バージョン 3.0 の場合は、ブランチ master を確認します。
~~~~~~
 => 確かにある!!?

目次

【0】設定環境例
【1】git の設定
 1)git の インストール
【2】Pythonの設定
 1)Pythonのインストール
 2)シンボリックリンクを設定
 3)pip のインストール
【3】Java8の設定
 1)Java8のインストール
【4】Apache Mavenの設定
 1)Apache Mavenのインストール
【5】Sparkのインストール
【6】aws-glue-libのインストール
【7】PySpark / boto3 / pytest のインストール
【8】[任意] VS Code のインストール
【9】環境変数設定
【10】動作確認
 1)Spark 起動確認
 2)Glue PySpark 起動確認

【0】設定環境例

* OS : Windows11
* VirtualBox : v6.1.34
* Guest OS : Linux Mint v20.3-mate-64bit

=> Windows の仮想環境設定については、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2022/01/30/171423

【1】git の設定

1)git の インストール

# とりあえず、念のため、バージョンを確認
git --version

sudo apt install git

【2】Pythonの設定

1)Pythonのインストール

# とりあえず、念のため、Pythonのバージョンを確認
python -V

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

# Glue3.0 は、Python3.7ベースで動いているため
sudo apt install python3.7 python3.7-dev python3.7-venv python3-distutils

# pipのインストール時に
# エラー「launchpadlib 1.10.13 requires testresources, which is not installed.」対策
# https://qiita.com/poiulkhjmnbv/items/1b05a829afa53f4d9aac
sudo apt install python3-testresources

2)シンボリックリンクを設定

# バージョンを切り替えるためにシンボリックリンクを設定
# sudo update-alternatives --install <作成するシンボリックのパス> <グループ名> <実体へのパス> <優先度>
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1

# sudo update-alternatives --install <グループ名>
sudo update-alternatives --config python3
1 << を選択 (python3.7)

# 「python -V」を実行した際に、
# 「ModuleNotFoundError: No module named 'apt_pkg'」
# が表示されるので、、、(3.8がデフォルトで入っている)
# https://mimizublog.com/sudo-apt-update%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E3%81%A7%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F  
sudo rm -rf /usr/bin/python
sudo ln -s /usr/bin/python3.7 /usr/bin/python
sudo rm -rf /usr/bin/python3
sudo ln -s /usr/bin/python3.8 /usr/bin/python3

# Pythonのバージョンを確認 (python3.7 になっているはず)
python -V

3)pip のインストール

https://www.python-izm.com/tips/pip/

# を参考に、、、

# pip が入っているか確認
python -m pip -V

# 入っていなかったら、pip のインストールを行う
curl -OL https://bootstrap.pypa.io/get-pip.py
sudo python3.7 get-pip.py

# 確認
python -m pip -V

【3】Java8の設定

1)Java8のインストール

# バージョンを確認
java -version

# もし、Java1.8じゃなかった場合、インストールする
sudo apt install openjdk-8-jdk
# Java1.8 をデフォルトで動くようにする(java-8-openjdkを選択)
sudo update-alternatives --config java

# 再度、バージョンを確認 (Java1.8が表示されるはず)
java -version

【4】Apache Mavenの設定

1)Apache Mavenのインストール

curl -OL https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-common/apache-maven-3.6.0-bin.tar.gz
sudo tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /opt/

# リンクを張る
sudo ln -s /opt/apache-maven-3.6.0 /opt/apache-maven

【5】Sparkのインストール

# Glue v3.0用のSpark v3.1.1 をダウンロードする
curl -OL https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-3.0/spark-3.1.1-amzn-0-bin-3.2.1-amzn-3.tgz

# インストール
# 「tar -xzvf spark-3.1.1-amzn-0-bin-3.2.1-amzn-3.tgz」 だと
# 「gzip: stdin: not in gzip format」って怒られる
tar -xvf spark-3.1.1-amzn-0-bin-3.2.1-amzn-3.tgz
sudo mv spark-3.1.1-amzn-0-bin-3.2.1-amzn-3 /opt/

# リネーム / リンクを張る
sudo ln -s /opt/spark-3.1.1-amzn-0-bin-3.2.1-amzn-3 /opt/spark

【6】aws-glue-libのインストール

https://github.com/awslabs/aws-glue-libs

# で確認した上で...

git clone https://github.com/awslabs/aws-glue-libs.git -b master --depth 1

sudo mv aws-glue-libs /opt/

# a: all(全て), o: other(その他), +: 指定した権限を付与, w: write(書き込み), r: read(読み込み)
sudo chmod -R ao+wr /opt/aws-glue-libs

【7】PySpark / boto3 / pytest のインストール

# PySpark のインストール
sudo python -m pip install pyspark

# boto3 / pytest のインストール
pip install boto3 pytest

【8】[任意] VS Code のインストール

[1] 以下のサイトから、最新のVS Code (.debファイル)をダウンロード
 => 今回の場合、「code_1.63.2-1639562499_amd64.deb」

https://code.visualstudio.com/download

[2] インストールする
~~~~
sudo apt install ./code_1.63.2-1639562499_amd64.deb
~~~~

[3] 「code」と入力し、VS Codeを起動する

【9】環境変数設定

vi ~/.bash_profile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export SPARK_HOME=/opt/spark
export PYSPARK_PYTHON=/usr/bin/python3
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export AWS_REGION=ap-northeast-1
export AWS_DEFAULT_REGION=ap-northeast-1
export PATH=$PATH:$SPARK_HOME/bin:$PYSPARK_PYTHON:/sbin:/opt/apache-maven/bin:/opt/aws-glue-libs/bin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# 適用
source ~/.bash_profile

# 確認
echo ${SPARK_HOME}
 => /opt/spark

# mavenの確認
mvn --version

【10】動作確認

1)Spark 起動確認

spark-shell

:quit << 起動確認できたら、辞める

2)Glue PySpark 起動確認

gluepyspark

# 色々なものをダウンロードするらしく、めちゃ長い、、、

exit() << 起動確認できたら、辞める

関連記事

AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue ~ ローカル環境を作成する ~
https://dk521123.hatenablog.com/entry/2019/11/10/205535
AWS Glue ~ Glue Version 3.0 ~
https://dk521123.hatenablog.com/entry/2021/09/18/232556