是否可以在DSX项目中的多个笔记本中共享信息(例如凭据),例如与环境变量?
例如,Bluemix中的Cloud Foundry应用程序具有可以定义环境变量的控件设置,DSX项目是否有类似的概念(我在各种项目级别设置中看不到任何内容)。
答案 0 :(得分:2)
单独的笔记本在后台具有单独的运行时,目前无法通过定义环境变量在笔记本之间共享凭据。但是,对于项目中最明显的凭证要求,有辅助方法。这称为“插入代码”方法。
例如:如果您有与项目关联的对象库。
除了“插入代码”之外,还有其他辅助函数,如“插入SparkR数据帧”,“Pandas数据帧”等,以加快数据科学家的分析过程。希望这有点帮助。
答案 1 :(得分:2)
仅供参考 - 我已在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()