我试图通过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访问集群。
1条答案
按热度按时间atmip9wb1#
这可能是由于您传递秘密时的编码问题。请调查此问题以及如何解决它。即使他们为AWS提供了解决方案,Azure也可能存在类似问题。您的秘密可能包含“/",您必须替换它。
上次更新中有一个已知问题与密钥中的'+'字符有关。特别是,我们不再支持将'+'转义为'%2B',而某些URL编码库支持此功能。
当前对AWS密钥进行编码的最佳做法是
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