是否可以在 DSX 项目中的多个笔记本之间共享信息(例如凭据),例如使用环境变量?
例如,Bluemix 中的 Cloud Foundry 应用程序具有可以定义环境变量的控制设置,DSX 项目是否有类似的概念(我在各种项目级别设置中看不到任何内容)。
是否可以在 DSX 项目中的多个笔记本之间共享信息(例如凭据),例如使用环境变量?
例如,Bluemix 中的 Cloud Foundry 应用程序具有可以定义环境变量的控制设置,DSX 项目是否有类似的概念(我在各种项目级别设置中看不到任何内容)。
仅供参考 - 我在uservoice上添加了一个功能请求,以允许将 Bluemix 服务绑定到项目,然后以与 Bluemix 应用程序访问凭证相同的方式访问凭证。如果您认为这将是有用的,请投票。
目前,我经常使用的一种模式是在我的项目中创建一个笔记本,用于将凭据保存到 DSX 上的文件中:
! echo '{ "username": "xxxx", "password": "xxxx", ... }' > cloudant_creds.json
该文件现在可供项目中的所有笔记本使用。 注意:文件保存在 spark 服务文件系统上。如果您在其他 dsx 项目中使用相同的 spark 服务,他们也将能够访问该文件。
cloudant 的凭据通常包括其他字段,例如主机,我没有在此处显示这些字段,因此我可以保持示例简单。我已经表明有更多的字段...
。我通常从 bluemix 服务凭证字段复制此 json。
在您的其他笔记本中,您将阅读以下凭据:
with open('cloudant_creds.json') as data_file:
sourceDB = json.load(data_file)
然后,您可以像这样引用凭据:
dfReader = sqlContext.read.format("com.cloudant.spark")
dfReader.option("cloudant.host", sourceDB.host)
if sourceDB.username:
dfReader.option("cloudant.username", sourceDB.username)
if sourceDB.password:
dfReader.option("cloudant.password", sourceDB.password)
df = dfReader.load(sourceDB.database).cache()
单独的笔记本在后台具有单独的运行时,目前无法通过定义环境变量在笔记本之间共享凭据。但是对于项目中最明显的凭证要求,有一些辅助方法。这称为“插入代码”方法。
例如:如果您有一个与您的项目关联的对象存储。
除了“插入到代码”之外,还有其他辅助功能,如“插入 SparkR 数据框”、“熊猫数据框”等,以加快数据科学家的分析过程。希望这有点帮助。