Jupyter Notebook 上で Dataiku の管理フォルダに書き込みを行う

HiroshiKawasaki
HiroshiKawasaki Partner, Registered Posts: 5 Partner

Dataikuの管理フォルダに Jupyter Notebook 上でファイル書き込みを行おうとしたところ

以下のエラーが発生しました。

DirectoryMissingPermissions: The 'workdir' directory 'file:///XXXX' does not have required permissions (read, write and execute required). Adjust directory permissions or specify a different directory with the necessary permissions. The error is caused by: Permission denied: user=dssuser_h_kawasaki, path="file:XXXXX":dataiku:dataiku:drwxrwx---

Dataikuの管理フォルダ作成ユーザとJupyter Notebook実行ユーザが異なるため権限がないことが

原因と考えられます。

Dataiku API を使えば書き込み可能と想定しますが、書き込み処理はライブラリ経由で行われるため書き込み処理部分の修正はできないため、

管理フォルダの権限変更または、Jupyter Notebookの実行ユーザ変更は可能でしょうか。

Comments

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 289 Dataiker
    edited 12:55AM

    ご質問内に「Dataikuの管理フォルダ作成ユーザとJupyter Notebook実行ユーザが異なる」と記載されていますので、ご利用の環境ではUIF(User Isolation Framework)を適用されているものと推測しています。

    Jupyter Notebookの実行ユーザーを変えることは不可(のはず)ですので、通常はやはりAPI経由で管理フォルダにアクセス、もしくは(UIFの環境でフォルダに直接アクセスしたい場合)自分が作成した管理フォルダに自分でアクセスする必要があります。

    今回のご質問のように、「UIFを利用している環境にて、別のユーザーが作成した管理フォルダに、異なるユーザーのJupyter Notebookから(API経由ではなく)直接アクセスしたい」場合、何らかの回避策を検討する必要があると思います。例えば、以下のような方法はいかがでしょうか?

    1. ご質問記載の「書き込み処理はライブラリ経由で行われる」処理を、Notebook内に記述するのではなく、別の共通プロジェクトを作成してその中に作成する(以下の手順)。
    2. 作成した共通プロジェクトの中で、コードレシピと管理フォルダを作成して、ライブラリ経由の書き込み処理を実装し、その処理をシナリオに登録する。
    3. 上記の共通プロジェクトを、Notebookを利用するプロジェクトに対して共有設定する。
    4. NotebookからDataiku APIを利用して、上記作成したシナリオを実行する。

    上記の方法が有効かどうかは、私も試せていないのですが、考え方の一つとして参考にしていただけますと幸いです。

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 289 Dataiker

    また、こちらは全然別件で恐縮ですが、いただいたご質問が「Data Haiker Connect Japan」のリストの一番下に表示されてしまっているようです。

    Q&Aのリスト内に表示させるためには、こちらのリンク( https://community.dataiku.com/categories/japan-user-group-%28data-haiker%29    )からご質問いただく方が良さそうですので、今後はこちらのリンクをお試しいただけますと幸いです🙇‍♂️

  • HiroshiKawasaki
    HiroshiKawasaki Partner, Registered Posts: 5 Partner

    回答ありがとうございます。

    自分が作成した管理フォルダに自分でアクセスする必要があります。

    こちらの内容について確認させてください。

    今回、管理フォルダをコードレシピのoutputに指定する際に新規作成しましたがエラーとなりました。

    自分が作成したプロジェクト内で、自分で管理フォルダを作成し、自分でコードレシピを作成しnotebook起動しています。

    image.png

    提案いただいた共通プロジェクトを作成する場合も同様の問題が発生すると考えられますがいかがでしょうか。

    また、管理フォルダを自身のユーザで作成可能な方法があれば、教えていただけますでしょうか。

  • Tsuyoshi
    Tsuyoshi Dataiker, PartnerAdmin, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 289 Dataiker

    ご連絡ありがとうございます。コメントをいただいた方法であれば、「管理フォルダを自身のユーザで作成」していることになります。

    今回、管理フォルダをコードレシピのoutputに指定する際に新規作成しましたがエラーとなりました。

    上記の状況で、ファイル書き込み時にエラーが発生するということですので、元のご質問に記載の「書き込み処理はライブラリ経由」のライブラリがDataikuを利用しているユーザーとは別の権限で動いているように見えます。

    上記の点はいかがでしょうか?この点はライブラリ側の仕様に依存しますので、まずはこの点をご確認いただければと思います。(Notebook上で実装されているコードを共有いただければ、もう少しコメントできるかもしれません。)

  • HiroshiKawasaki
    HiroshiKawasaki Partner, Registered Posts: 5 Partner

    ご確認ありがとうございます。

    notebook上で以下調査しましたので、ご確認いただけますでしょうか。

    image.png

    対象の管理フォルダをnotebook上から確認すると所有者、グループが dataiku となっていて

    notebook の実行ユーザは dssuser_h_kawasaki となっています。

    これまでのやり取りからは管理フォルダの所有者は dssuser_h_kawasaki となる認識ですがいかがでしょうか。

    また、複数ユーザが利用することを考慮すると、特定のユーザに権限を与えても他のユーザが利用できないことになるため、

    以下のPathの設定から管理フォルダの参照先を、Dataiku管理外にOSコマンドで作成したディレクトリに変更して、OSコマンドで権限を付与することで

    解決できるのではないかと考えましたがいかがでしょうか。

    image.png
Setup Info
    Tags
      Help me…