我正在尝试通过python脚本访问Azure databricks spark群集,该脚本将令牌作为通过databricks用户设置生成的输入,并调用Get方法以获取群集的详细信息以及cluster-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访问集群。
答案 0 :(得分: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