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.

Databricksのノートブックスコープライブラリのスコープとは?

Last updated at Posted at 2022-08-02

こちらで説明されているノートブックスコープライブラリをより詳細に説明した内容となっています。

名前の通り「ノートブック」がスコープとなるライブラリなのですが、自分もきちんと理解しているのか不安になったので動作を確認してみました。

あるクラスターにアタッチしているすべてのノートブックに反映されるのがクラスターライブラリです。

一方、ノートブックスコープライブラリで疑問に思うのは以下の点でしょうか。

疑問1

同じユーザーが同じクラスターに複数のノートブックをアタッチしている際、一方のノートブック(ノートブックA)でノートブックスコープライブラリをインストールしたら、もう一方のノートブック(ノートブックB)はどうなるのか?

これに関しては、こちらで説明している通りなのですが、以下で実際に確認します。

ノートブックスコープライブラリをインストールすると、現在のノートブックとそのノートブックに関連づけられているジョブがそのライブラリにアクセスすることができます。同じクラスターにアタッチされている他のノートブックは影響を受けません。

疑問2

ノートブックスコープライブラリをインストールした後、それまで使えていた変数にアクセスできなくなったのだけどなぜ?他のノートブックは影響を受けないの?

これらの疑問に答えるべく、実際に試してみます。

ノートブックの準備

以下の2つのノートブックを準備します。疑問2の確認をするために変数を宣言しておきます。

notebook_A
test = "A"
notebook_B
test = "B"

これらを同じクラスターにアタッチします。

ノートブックスコープライブラリのインストール

notebook_Aの2番目のセルで以下を実行して、ノートブックスコープライブラリをインストールします。

notebook_A
%pip install deepchem

Screen Shot 2022-08-02 at 19.05.03.png

この後で以下を実行するとimportできることが確認できます。

notebook_A
import deepchem

一方、notebook_Bでも同じライブラリをimportしようとしてみます。

notebook_B
import deepchem

同じクラスターにアタッチしているにも関わらずimportすることはできません。これで疑問1に対する答えが分かったことになります。同じユーザーであろうが同じクラスターであろうが、%pipを実行したノートブックのみがスコープなので、別のノートブックからはライブラリを利用できないとなります。
Screen Shot 2022-08-02 at 19.07.08.png

それでは疑問2はどうでしょうか。

notebook_A
test

notebook_Aでは変数が参照できなくなっています。
Screen Shot 2022-08-02 at 19.10.45.png

これも、こちらに記載があります。

ノートブックの一番最初に%pipを記述してください。%pipが実行された後に、ノートブックの内部状態がリセットされます。ノートブックでPythonメソッドあるいは変数を宣言した後に%pipを実行するとそれらは消去されてしまいます。

このため、%pipを実行したnotebook_Aでは内部状態がリセットされてしまうため変数が参照できなくなっています。それでは、notebook_Bではどうでしょうか。

notebook_B
test

以下のように、notebook_Bでは問題なく変数を参照できます。
Screen Shot 2022-08-02 at 19.11.29.png

これによって、疑問2に対する回答も分かりました。同じユーザーであろうが同じクラスターであろうが、%pipを実行したノートブックのみがスコープなので、内部状態のリセットも別のノートブックは影響を受けないとなります。

まとめ

疑問1

同じユーザーが同じクラスターに複数のノートブックをアタッチしている際、一方のノートブック(ノートブックA)でノートブックスコープライブラリをインストールしたら、もう一方のノートブック(ノートブックB)はどうなるのか?

同じユーザーであろうが同じクラスターであろうが、%pipを実行したノートブックのみがスコープなので、別のノートブックからはライブラリを利用できません。

疑問2

ノートブックスコープライブラリをインストールした後、それまで使えていた変数にアクセスできなくなったのだけどなぜ?他のノートブックは影響を受けないの?

同じユーザーであろうが同じクラスターであろうが、%pipを実行したノートブックのみがスコープなので、%pipを実行したノートブックの内部状態がリセットされるので変数が参照できなくなります。なお、内部状態のリセットも別のノートブックは影響を受けません。

Databricks 無料トライアル

Databricks 無料トライアル

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?