はじめに
Jupyter Nootebookで開発できるようになったGlueがとても便利になったため、最近よく触っています。
今回はモジュールを使う方法について記事にしました。
- デフォルトで入っているモジュールは何か
- 入っていないモジュールを扱うにはどうすればいいのか
- インタラクティブセッションで(でも)扱う方法
デフォルトで入っているモジュール
以下のコマンドで確認できます。
!pip3 list
numpyやpandasなど、よく使うものは入っています。
クリックで表示
Package Version
-------------------- -----------
anyio 3.6.2
argon2-cffi 21.3.0
argon2-cffi-bindings 21.2.0
attrs 22.1.0
autovizwidget 0.20.0
aws-glue-sessions 0.37.0
awscli 1.27.10
Babel 2.11.0
backcall 0.2.0
beautifulsoup4 4.11.1
bleach 5.0.1
boto3 1.26.10
botocore 1.29.10
certifi 2022.9.24
cffi 1.15.1
charset-normalizer 2.1.1
click 8.1.3
colorama 0.4.4
debugpy 1.6.3
decorator 5.1.1
defusedxml 0.7.1
docutils 0.16
entrypoints 0.4
fastjsonschema 2.16.2
hdijupyterutils 0.20.0
idna 3.4
importlib-metadata 5.0.0
importlib-resources 5.10.0
ipykernel 6.16.2
ipython 7.34.0
ipython-genutils 0.2.0
ipywidgets 8.0.2
jedi 0.18.1
Jinja2 3.1.2
jmespath 1.0.1
json5 0.9.10
jsonschema 4.17.0
jupyter 1.0.0
jupyter-client 7.4.7
jupyter-console 6.4.4
jupyter-core 4.11.2
jupyter-server 1.23.2
jupyterlab 3.5.0
jupyterlab-pygments 0.2.2
jupyterlab-server 2.16.3
jupyterlab-widgets 3.0.3
MarkupSafe 2.1.1
matplotlib-inline 0.1.6
mistune 2.0.4
mock 4.0.3
nbclassic 0.4.8
nbclient 0.7.0
nbconvert 7.2.5
nbformat 5.7.0
nest-asyncio 1.5.6
nose 1.3.7
notebook 6.5.2
notebook-shim 0.2.2
numpy 1.21.6
packaging 21.3
pandas 1.3.5
pandocfilters 1.5.0
parso 0.8.3
pexpect 4.8.0
pickleshare 0.7.5
pip 20.2.2
pkgutil-resolve-name 1.3.10
plotly 5.11.0
prometheus-client 0.15.0
prompt-toolkit 3.0.32
psutil 5.9.4
ptyprocess 0.7.0
pyasn1 0.4.8
pycparser 2.21
Pygments 2.13.0
pykerberos 1.2.4
pyparsing 3.0.9
pyrsistent 0.19.2
python-dateutil 2.8.2
pytz 2022.6
PyYAML 5.4.1
pyzmq 24.0.1
qtconsole 5.4.0
QtPy 2.3.0
requests 2.28.1
rsa 4.7.2
s3transfer 0.6.0
Send2Trash 1.8.0
setuptools 49.1.3
six 1.16.0
sniffio 1.3.0
soupsieve 2.3.2.post1
tenacity 8.1.0
terminado 0.17.0
tinycss2 1.2.1
tomli 2.0.1
tornado 6.2
traitlets 5.5.0
typing-extensions 4.4.0
urllib3 1.26.12
wcwidth 0.2.5
webencodings 0.5.1
websocket-client 1.4.2
widgetsnbextension 4.0.3
zipp 3.10.0
入っていないモジュール
追加する必要があります。pip install
ではなく、マジックで追加します。
モジュールの追加の仕方
サンプルは以下のようになります。複数入れる場合はカンマで区切ります。
# 読み込ますモジュール
%additional_python_modules awswrangler,pdfminer.six
これを記載すると、Job parametersに追加されます。
またこの情報、コード管理と連携するとそこに記載されます。
{
"defaultArguments" : {
"--encryption-type" : "sse-s3",
"--enable-job-insights" : "false",
"--additional-python-modules" : "awswrangler,pdfminer.six",
"--enable-glue-datacatalog" : "true",
"library-set" : "analytics",
"--job-language" : "python",
"--TempDir" : "s3://aws-glue-assets-123456789012-ap-northeast-1/temporary/"
},
一方ダウンロードしたJSONファイルの中には、この情報の記載はありませんでした。
インタラクティブセッションで使う
インタラクティブセッションでは以下のようなメッセージが出てきます。
You are already connected to session <SESSION ID>. Your change will not reflect in the current session, but it will affect future new sessions.
その際はセッションを止め、後続処理を動かすだけでOKです。
%stop_session
# 動かすだけで、セッション開始してくれる
import awswrangler as wr
おわりに
Jupyter NotebookのGlueでのモジュールのインポートについてまとめてみました。
これだけ便利になってきたので、Lambdaで出来なかったことをGlueなら実現できそうです。