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

时间:2017-01-26 15:07:30

标签: python-2.7 python-3.x ibm-cloud dsx data-science-experience

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

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

2 个答案:

答案 0 :(得分:3)

如果您可以在公共git存储库上公开提供代码,则可以将代码转换为python包并将其保存在github中。请参阅此处获取示例包:A simple Hello World setuptools package and installing it with pip

您可以使用以下命令直接从github安装它:

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

私有github存储库

还应该可以使用与上面类似的方法与私有github存储库,一些额外的设置步骤和pip的不同url格式。 E.g。

在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,例如。

答案 1 :(得分:1)

一种选择是使用以下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控制台并导航到Service Credentials,可以获得上述变量。或者,您可以使用命令行cf工具来检索此信息。这个Q/A提供了有关cf命令行方法的更多信息。

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

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

此答案归功于Roland Weber