是否可以在DSX项目中的多个笔记本之间共享信息(如凭据),例如与环境变量共享?
例如,Bluemix中的Cloud Foundry应用程序有一个可以定义环境变量的控制设置,DSX项目是否有类似的概念(我在各种项目级别的设置中看不到任何内容)。
单独的笔记本在后台有单独的运行时,目前无法通过定义环境变量在笔记本之间共享凭据。但是,对于项目中最明显的凭据需求,有一些辅助方法。这被称为"插入到代码"方法。
例如:如果您有一个与项目关联的对象存储。
- 选择顶部栏中的"数据"选项卡
- 通过浏览或简单的拖动操作将一些文件添加到对象存储中
- 通过选择右侧面板中文件旁边的"插入凭据"选项,在笔记本中插入该对象存储容器的凭据
- 然后,您可以直接将这些凭据插入该项目中的任何其他笔记本中(步骤3)
除了"插入到代码",还有其他辅助功能,如"插入SparkR数据帧"、"Pandas数据帧"等,以加快数据科学家的分析过程。希望这有点帮助。
FYI-我在uservoice上添加了一个功能请求,允许Bluemix服务绑定到项目,然后以Bluemix应用程序访问凭据的方式访问凭据。如果你认为这会有用,请投票。
目前,我经常使用的一种模式是在我的项目中创建一个笔记本,用于将凭据保存到DSX:上的文件中
! echo '{ "username": "xxxx", "password": "xxxx", ... }' > cloudant_creds.json
该文件现在可用于项目中的所有笔记本注意:文件保存在spark服务文件系统中。如果您在其他dsx项目中使用相同的spark服务,他们也可以访问该文件。
cloudant的凭据通常包括其他字段,如host,我在这里没有显示这些字段,所以我可以保持示例的简单性。我已经指出...
有更多的字段。我通常从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()