我在一个单独的python脚本中定义了一些辅助工具。我想把这个脚本提供给DSX笔记本,所以我可以在单元格中调用它们,但我不想直接将脚本放入单元格。
有哪些方法可以实现这一目标?
答案 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存储库,一些额外的设置步骤和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。