■ はじめに
https://dk521123.hatenablog.com/entry/2019/12/14/010524
https://dk521123.hatenablog.com/entry/2019/12/16/231149
の続き。 今回は、ローカル上にAWS Glue環境を作る。 以下の公式サイトを参考になる。
公式サイト
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-etl-libraries.html
Glue v3.0版について
* 以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2022/01/31/165650
目次
【0】設定環境例 必要なライブラリ 【1】git の設定 1)git の インストール 【2】Pythonの設定 1)Pythonのインストール 2)シンボリックリンクを設定 【3】Java8の設定 1)Java8のインストール 【4】Apache Mavenの設定 1)Apache Mavenのインストール 【5】Sparkのインストール 【6】aws-glue-libのインストール 【7】PySpark / boto3 / pytest のインストール 【8】環境変数設定 【9】動作確認 1)Spark 起動確認 2)Glue PySpark 起動確認 補足:Glue ローカル環境に関するコマンド
【0】設定環境例
* OS : Windows10(WSL2) * 仮想OS: Ubuntu 20.04.2 LTS => Windows の仮想環境設定については、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2020/12/08/165505
https://dk521123.hatenablog.com/entry/2020/12/10/094125
必要なライブラリ
1) Python3.6 / Python3.7 => Glue1.0 は、3.6ベースで動いているため => Glue2.0 は、3.7ベースで動いているため => 詳細は、以下の関連記事を参照のこと。
https://dk521123.hatenablog.com/entry/2019/10/01/221926
2) AWS Glue Python ライブラリ
https://github.com/awslabs/aws-glue-libs
[AWS Glue Python ライブラリで使用している依存ライブラリ] 2-a)Java 2-b)Apache Maven 2-c)Apache Spark ※ 「AWS Glue Python ライブラリ」については、以下の公式サイトを参照のこと。
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-etl-libraries.html
【1】git の設定
1)git の インストール
# とりあえず、念のため、バージョンを確認 git --version sudo apt install git
【2】Pythonの設定
1)Pythonのインストール
# とりあえず、念のため、Pythonのバージョンを確認 python -V sudo apt install python3.7 python3.7-dev python3-distutils
2)シンボリックリンクを設定
# バージョンを切り替えるためにシンボリックリンクを設定 # sudo update-alternatives --install <作成するシンボリックのパス> <グループ名> <実体へのパス> <優先度> sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2 # sudo update-alternatives --install <グループ名> sudo update-alternatives --config python3 2 << を選択 (python3.7) # Pythonのバージョンを確認 (python3.7 になっているはず) python -V
【3】Java8の設定
1)Java8のインストール
# バージョンを確認 java -version # もし、Java1.8じゃなかった場合、インストールする sudo apt install openjdk-8-jdk # 再度、バージョンを確認 (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 # 確認 mvn --version
【5】Sparkのインストール
curl -OL https://aws-glue-etl-artifacts.s3.amazonaws.com/glue-1.0/spark-2.4.3-bin-hadoop2.8.tgz tar -xzvf spark-2.4.3-bin-hadoop2.8.tgz # リネーム / リンクを張る sudo mv spark-2.4.3-bin-spark-2.4.3-bin-hadoop2.8 /opt/ sudo ln -s /opt/spark-2.4.3-bin-spark-2.4.3-bin-hadoop2.8 /opt/spark
【6】aws-glue-libのインストール
git clone https://github.com/awslabs/aws-glue-libs.git -b glue-1.0 --depth 1 sudo mv aws-glue-libs /opt/ sudo chmod -R ao+wr /opt/aws-glue-libs
【7】PySpark / boto3 / pytest のインストール
sudo python3.6 -m pip install pyspark sudo python3.7 -m pip install pyspark pip3 install boto3 pytest
【8】環境変数設定
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
【9】動作確認
1)Spark 起動確認
spark-shell :quit << 起動確認できたら、辞める
2)Glue PySpark 起動確認
gluepyspark exit() << 起動確認できたら、辞める
補足:Glue ローカル環境に関するコマンド
/opt/aws-glue-libs/bin 内を参照すると、以下の3つのコマンドが存在する。 a) gluepyspark ... 対話モードでgluepysparkを起動する場合に使用 b) gluesparksubmit ... Jobを実行したい場合に使用 c) gluepytest ... 単体試験を実行したい場合に使用
参考文献
https://future-architect.github.io/articles/20210521a/
https://dev.classmethod.jp/articles/aws-glue-local/
https://future-architect.github.io/articles/20191206/
https://future-architect.github.io/articles/20191101/
https://qiita.com/kusanoiskuzuno/items/4175e62763526789b34e
https://takap.net/local_glue_docker/
関連記事
AWS Glue ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/10/01/221926
AWS Glue ~ ローカル環境を作成する / Glue v3.0版 ~
https://dk521123.hatenablog.com/entry/2022/01/31/165650
Apache Spark ~ 環境設定 / Linux編 ~
https://dk521123.hatenablog.com/entry/2019/11/01/000000
LocalStack ~ ローカルで疑似AWSを作成する ~
https://dk521123.hatenablog.com/entry/2019/12/14/010524
LocalStack ~ ローカルで疑似Lambda/S3/DynamoDBを作成する ~
https://dk521123.hatenablog.com/entry/2019/12/16/231149
LocalStack ~ awscli-local ~
https://dk521123.hatenablog.com/entry/2020/12/16/211127
Docker Desktop / WSL2 ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/12/08/165505
Windows Terminalを使ってWindows上にあるUbuntuでDockerを使えるようにする
https://dk521123.hatenablog.com/entry/2020/12/10/094125
単体試験 / pytest ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/12/13/224810