2

我正在尝试通过 python 脚本访问 Azure databricks spark 集群,该脚本将令牌作为通过 databricks 用户设置生成的输入并调用 Get 方法来获取集群的详细信息以及集群 ID。

下面是代码片段。如图所示,我在中南区创建了一个集群。

import requests
headers = {"Authorization":"Bearer dapiad************************"}
data=requests.get("https://southcentralus.azuredatabricks.net/api/2.0/clusters/get?cluster_id=**************",headers=headers).text
print data

预期结果应该给出集群的全部细节,例如。 {"cluster_id":"0128-******","spark_context_id":3850138716505089853,"cluster_name":"abcdxyz","spark_version":"5.1.x-scala2.11","spark_conf":{"spark.databricks.delta.preview.enabled":"true"},"node_type_id" and so on .....}

当我在 google colaboratory 上执行代码时,上面的代码正在工作,而我的本地 IDE 即空闲时同样不能工作。它给出了 HTTP 403 的错误,如下所示:

<p>Problem accessing /api/2.0/clusters/get. Reason:
<pre>    Invalid access token.</pre></p>

谁能帮我解决这个问题?我被困在这部分,无法通过 API 访问集群。

4

1 回答 1

0

这可能是由于您传递秘密时的编码问题。请查看此问题以及如何解决它。尽管他们为 AWS 提供了解决方案,但它也可能与 Azure 类似。您的秘密可能有“/”,您必须替换它。

上次更新中存在与密钥中的“+”字符相关的已知问题。特别是,我们不再支持将“+”转义为“%2B”,某些 URL 编码库会这样做。

当前编码 AWS 密钥的最佳实践方法很简单

secretKey.replace("/","%2F")

示例 python 脚本如下:

New_Secret_key = "MySecret/".replace("/","%2F")

https://forums.databricks.com/questions/6590/s3serviceexception-raised-when-accessing-via-mount.html

https://forums.databricks.com/questions/6621/responsecode403-responsemessageforbidden.html

于 2019-02-05T09:22:44.270 回答