Apache Spark 获取HTTP错误403 -尝试通过Azure数据库访问群集时访问令牌无效

cmssoen2  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(158)

我试图通过Python脚本访问Azure数据库Spark集群,该脚本将令牌作为通过数据库用户设置生成的输入,并调用Get方法来获取集群的详细信息以及集群ID。
下面是代码片段。如图所示,我在southcentralus区域创建了一个集群。

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 collaboratory上执行代码时,上面的代码可以正常工作,而在我的本地IDE上,同样的代码不能正常工作,即空闲。它会给出HTTP 403错误,如下所示:

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

有人能帮我解决这个问题吗?我在这个部分卡住了,无法通过API访问集群。

atmip9wb

atmip9wb1#

这可能是由于您传递秘密时的编码问题。请调查此问题以及如何解决它。即使他们为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

相关问题