如何在DSX项目中跨笔记本共享信息

时间:2017-01-20 18:36:34

标签: ibm-cloud data-science-experience dsx

是否可以在DSX项目中的多个笔记本中共享信息(例如凭据),例如与环境变量?

例如,Bluemix中的Cloud Foundry应用程序具有可以定义环境变量的控件设置,DSX项目是否有类似的概念(我在各种项目级别设置中看不到任何内容)。

2 个答案:

答案 0 :(得分:2)

单独的笔记本在后台具有单独的运行时,目前无法通过定义环境变量在笔记本之间共享凭据。但是,对于项目中最明显的凭证要求,有辅助方法。这称为“插入代码”方法。

例如:如果您有与项目关联的对象库。

  1. 选择顶部栏中的“数据”标签。
  2. 通过浏览或简单的拖放操作将一些文件添加到对象库。
  3. 通过选择“插入凭据”选项将该对象存储容器的凭据插入笔记本中,右侧是右侧面板中的文件。
  4. 然后,您可以直接在该项目的任何其他笔记本中插入这些凭据(步骤3)。
  5. 除了“插入代码”之外,还有其他辅助函数,如“插入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()