从 python 代码连接到远程 python 内核

Posted

技术标签:

【中文标题】从 python 代码连接到远程 python 内核【英文标题】:Connect to remote python kernel from python code 【发布时间】:2020-01-30 00:40:45 【问题描述】:

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

如果是 Jupyter notebook,我可以通过使用 jupyter notebook --gateway-url=http://my-gateway-server:8888 启动 jupyter 服务器来做到这一点,并且我可以在远程内核上执行我的代码。但是如何让我的本地 python 代码(通过 PaperMill)使用远程内核?在内核管理器中进行哪些更改以连接到远程内核?

我能找到的一个相关的 SO 答案是 here。这建议对远程服务器进行端口转发,并使用来自服务器的连接文件初始化 KernelManager。我无法做到这一点,因为 blockingkernelmanager 不再在 Ipython.zmp 中,我也更喜欢像 jupyter 那样的 HTTP 连接。

【问题讨论】:

【参考方案1】:

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

    使用hadoop 用户在您的 EMR 主节点上创建一个 python 环境 在您的环境中安装 sparkmagic 并按照 sparkmagic 的 README.md 文件中的说明配置所有内核 将您的笔记本复制到主节点/直接从 s3 位置使用它

    与造纸厂一起运行:

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

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

稍微好一点的方法:

    在你的 Jupyter 中设置一个远程内核:REMOTE KERNEL 通过选择此远程内核,像普通笔记本一样使用 papermill 执行

我将这两种方法用于不同的用例,目前它们似乎工作正常。

【讨论】:

以上是关于从 python 代码连接到远程 python 内核的主要内容,如果未能解决你的问题,请参考以下文章

如何连接到远程 Windows 机器以使用 python 执行命令?

获取VS代码Python扩展以连接到远程AWS EMR主节点上运行的Jupyter。

无法通过 python 中的 ssh 隧道连接到远程数据库

AWS Glue 可以通过 SFTP 连接到远程服务器吗?

使用 Python 通过 SSH 隧道连接到远程 PostgreSQL 数据库

Pycharm 无法连接到控制台进程退出代码 -1 远程解释器