Search code examples
jupyter-notebookjupyterjupyterhubpapermill

How do I set parameters for each notebook on JuPyterHub running on K8s


I want to set some parameters as defined here(https://github.com/nteract/papermill#python-version-support). The catch is, I want to be able to do this via UI. I have a JHub installed on my cluster and while opening it, I want certain parameters to be set by default.

Also, when I pass the parameters via papermill(the above script gets saved somewhere and then I will run it via papermill), I want the latter to override the former.

I tried looking into several topics in pure JuPyter notebooks but in vain.


Solution

  • For the user to access some parameters as soon as her notebook starts, ipython needs to know the startup cells. This can be done via the following commands in case of JuPyterHub:

    proxy:
      secretToken: "yada yada"
    singleuser:
      image:
        name: some_acc_id.dkr.ecr.ap-south-1.amazonaws.com/demo
        tag: 12h
      lifecycleHooks:
        postStart:
          exec:
            command: ["/bin/sh", "-c", 'ipython profile create; cd ~/.ipython/profile_default/startup; echo ''run_id = "sample" ''> aviral.py']
      imagePullSecret:
        enabled: true
        registry: some_acc_id.dkr.ecr.ap-south-1.amazonaws.com
        username: aws
        email: [email protected]
    

    Make sure you are escaping the quotes in the yaml correctly, or simply follow what I have done above.

    Once this is done, papermill will override the params but for that, you have to make sure that the cell is tagged as "parameters". For instance, in my jupyterhub, every notebook that starts has run_id variable with the value "sample".