使用Python代码连接到远程Python内核

4

我一直在使用PaperMill来定期执行我的Python笔记本。为了执行计算密集型笔记本,我需要连接到在我的EMR集群上运行的远程内核。

在Jupyter笔记本的情况下,我可以通过使用jupyter notebook --gateway-url=http://my-gateway-server:8888启动jupyter服务器,并能够在远程内核上执行我的代码。但是,我应该如何让我的本地Python代码(通过PaperMill)使用远程内核呢?我需要对Kernel Manager进行哪些更改以连接到远程内核?

我找到了一个相关的SO答案here。这建议对远程服务器进行端口转发,并使用服务器上的连接文件初始化KernelManager。我无法执行此操作,因为blockingkernelmanager已不再存在于Ipython.zmp中,而且我也更喜欢像jupyter一样使用HTTP连接。

1个回答

2

巧妙的方法 - 设置一个shell脚本来执行以下操作:

  1. 使用hadoop用户在您的EMR主节点上创建一个Python环境
  2. 在您的环境中安装sparkmagic并按照sparkmagic的README.md文件配置所有内核
  3. 将笔记本复制到主节点/直接从S3位置使用
  4. 使用papermill运行:

    papermill s3://path/to/notebook/input.ipynb s3://path/to/notebook/output.ipynb -p param=1

如果您的集群主节点每次都相同,则步骤1和2是一次性要求。

稍微好一点的方法:

  1. 在Jupyter中设置一个远程内核:REMOTE KERNEL
  2. 通过选择此远程内核,像正常笔记本一样使用papermill执行

我正在为不同的用例使用这两种方法,目前它们似乎都可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接