2

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

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

4

2 回答 2

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()
于 2017-01-21T07:17:27.600 回答
2

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

例如:如果您有一个与您的项目关联的对象存储。

  1. 选择顶部栏中的“数据”选项卡。
  2. 通过浏览或简单的拖放将一些文件添加到对象存储中。
  3. 通过选择右侧面板中的文件旁边的“插入凭据”选项,在笔记本中插入该对象存储容器的凭据。
  4. 然后,您可以直接将这些凭据(第 3 步)插入该项目的任何其他笔记本中。

除了“插入到代码”之外,还有其他辅助功能,如“插入 SparkR 数据框”、“熊猫数据框”等,以加快数据科学家的分析过程。希望这有点帮助。

于 2017-01-20T21:16:49.567 回答