如何在DSX中提供用户功能/模块



我在一个单独的python脚本中定义了一些辅助工具。我想让DSX笔记本可以使用该脚本,这样我就可以在单元格中调用它们,但我不想直接将脚本放入单元格中。

实现这一目标的方法有哪些?

如果您可以在公共git存储库中公开您的代码,那么您可以将代码转换为python包并将其保存在github中。请参阅此处的示例软件包:一个简单的Hello World setuptools软件包,并使用pip进行安装。

您可以直接从github安装它,使用:

!pip install --user git+https://github.com/public_account/public_repo

私有github存储库

还应该可以使用与上面类似的方法来处理私有github存储库,只需一些额外的设置步骤和不同的pip url格式。例如

在dsx 上生成ssh密钥

! ssh-keygen -b 2048 -t rsa -f ~/.ssh/id_rsa -q -N ""

将以下命令的输出添加到github帐户设置中::SSH和GPG密钥

! cat ~/.ssh/id_rsa.pub

接下来,将github-ssh密钥添加到dsx:

! ssh-keyscan github.com >> ~/.ssh/known_hosts

重要信息:您应该手动验证导入的github主机密钥是否真实。您可以使用查看导入的密钥

! cat ~/.ssh/known_hosts

您现在可以使用pip:进行安装

! pip install --user git+ssh://git@github.com/private_account/private_repo

小心上述方法存在一些安全考虑因素。也就是说,任何有权访问执行上述命令的spark服务的人都可以访问git私有存储库。


注意:

理想情况下,在未来,我希望看到dsx为编辑项目中的所有文件并将所有项目文件提交给github提供支持,例如

  • https://datascix.uservoice.com/forums/387207-general/suggestions/17836447-provide-much-more-git-functionality
  • https://datascix.uservoice.com/forums/387207-general/suggestions/17523673-update-notebooks-to-jupyter-labs-for-full-ide-inte

一个选项是使用以下API调用从客户端机器将包上载到您的spark帐户:

curl 
-X PUT 
-k 
-u ${tenant_id}:${tenant_secret} 
-H "X-Spark-service-instance-id: ${instance_id}" 
--data-binary "@path_to_local_file" 
${cluster_master_url}/tenant/data/destination_file_name

以上变量可以通过登录Bluemix控制台并导航到服务凭据来获得。或者,您可以使用命令行cf工具来检索此信息。本问答提供了有关cf命令行方法的更多信息。

将您的包裹上传到spark服务后,您可以使用:

! pip install --user ${HOME}/data/destination_file_name

罗兰·韦伯的回答值得称赞。

相关内容

  • 没有找到相关文章

最新更新