Azure HDInsight 上的 Jupyter 无法读取同一目录中的文件
Jupyter on Azure HDInsight can't read a file on same directory
我想将配置变量与 Jupyter notebook 分开。所以我想我会把所有这些变量放在一个单独的 json 文件中。我使用 Azure HDInsight 并且不想依赖存储帐户名称和密钥来访问此文件,因为它们本身就是配置变量。
所以我认为将此配置 json 文件存储在与笔记本位置相同的目录中可以解决此问题,并且还允许更改此配置文件而无需像 it is also saved in storage account 那样触摸 Python 脚本.
但是,Python 无法读取同一目录下的这个文件(见截图)
笔记本首页:
笔记本:
我发现这是因为不同的用户和权限。
笔记本是 运行 用户 livy
,当我 运行 魔术命令时,用户是 spark
。所以 pwd
魔术命令将工作目录显示为 /var/lib/jupyter
(这非常令人困惑)并且它包含笔记本主页上显示的所有文件。
为了解决我手头的问题,我可以使用带路径的 wasp(没有容器和存储帐户主机名,因为它存储在默认存储中)。
config = spark.read.json("wasb:///HdiNotebooks/config.json")
通过这种方式,我删除了容器名称和存储帐户名称在 spark 代码中的硬编码。
我想将配置变量与 Jupyter notebook 分开。所以我想我会把所有这些变量放在一个单独的 json 文件中。我使用 Azure HDInsight 并且不想依赖存储帐户名称和密钥来访问此文件,因为它们本身就是配置变量。
所以我认为将此配置 json 文件存储在与笔记本位置相同的目录中可以解决此问题,并且还允许更改此配置文件而无需像 it is also saved in storage account 那样触摸 Python 脚本.
但是,Python 无法读取同一目录下的这个文件(见截图)
笔记本首页:
笔记本:
我发现这是因为不同的用户和权限。
笔记本是 运行 用户 livy
,当我 运行 魔术命令时,用户是 spark
。所以 pwd
魔术命令将工作目录显示为 /var/lib/jupyter
(这非常令人困惑)并且它包含笔记本主页上显示的所有文件。
为了解决我手头的问题,我可以使用带路径的 wasp(没有容器和存储帐户主机名,因为它存储在默认存储中)。
config = spark.read.json("wasb:///HdiNotebooks/config.json")
通过这种方式,我删除了容器名称和存储帐户名称在 spark 代码中的硬编码。