0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Glue(JupterNotebook)でモジュールを使う

Posted at

はじめに

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に追加されます。

image.png

またこの情報、コード管理と連携するとそこに記載されます。

{
  "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. 

インポートすると以下のようにエラーになります。
image.png

その際はセッションを止め、後続処理を動かすだけでOKです。

%stop_session

image.png

# 動かすだけで、セッション開始してくれる
import awswrangler as wr

モジュールを引数に指定して起動されました。
image.png

おわりに

Jupyter NotebookのGlueでのモジュールのインポートについてまとめてみました。

これだけ便利になってきたので、Lambdaで出来なかったことをGlueなら実現できそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?