Google cloud platform Dataproc:通过RESTAPI提交Spark作业

Google cloud platform Dataproc:通过RESTAPI提交Spark作业,google-cloud-platform,google-cloud-dataproc,Google Cloud Platform,Google Cloud Dataproc,我们正在使用谷歌云平台进行大数据分析。对于处理,我们目前正在使用google cloud dataproc&spark streaming 我想使用RESTAPI提交Spark作业,但是当我使用API键调用URI时,我得到以下错误 { "error": { "code": 403, "message": "The caller does not have permission", "status": "PERMISSION_DENIED" } } URI:-**

我们正在使用谷歌云平台进行大数据分析。对于处理,我们目前正在使用google cloud dataproc&spark streaming

我想使用RESTAPI提交Spark作业,但是当我使用API键调用URI时,我得到以下错误

{
  "error": {
    "code": 403,
    "message": "The caller does not have permission",
    "status": "PERMISSION_DENIED"
  }
}
URI:-*************SGxAipL0


我从googleconsole>API管理器创建了API,虽然API键可以用于将调用与开发人员项目关联起来,但实际上并不用于授权。Dataproc的RESTAPI与谷歌云平台中的大多数其他付费RESTAPI一样,用于身份验证和授权。如果您希望以编程方式调用API,您可能希望使用一个客户端库,例如,它为低级JSON协议提供了方便的包装,并为您提供了

您还可以使用Google的DirectRESTAPI进行实验,您需要单击右上角的按钮,上面写着“使用OAuth 2.0授权请求”

我还注意到您在Dataproc URI的
regions/
路径下使用了us-central1-f;请注意,Dataproc的区域不会与计算引擎区域或区域一一对应;相反,Dataproc的每个区域将包含多个计算引擎区域。目前,只有一个Dataproc区域公开可用,称为
global
,能够将集群部署到所有计算引擎区域。对于使用oauth2访问令牌的简单说明,如果安装了
gcloud
CLI,您可以简单地将
curl
gcloud
一起使用:

PROJECT='<YOUR PROJECT HERE>'
ACCESS_TOKEN=$(gcloud beta auth application-default print-access-token)
curl \
    --header "Authorization: Bearer ${ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    https://dataproc.googleapis.com/v1/projects/${PROJECT}/regions/global/clusters
PROJECT=''
ACCESS_令牌=$(gcloud beta auth应用程序默认打印访问令牌)
卷曲\
--标题“授权:承载${ACCESS\u TOKEN}”\
--标题“内容类型:应用程序/json”\
https://dataproc.googleapis.com/v1/projects/${PROJECT}/regions/global/clusters

请记住,gcloud打印的
ACCESS\u令牌
自然过期(如果我没记错的话,大约5分钟后);关键的概念是,您在每个请求的HTTP头中传递的令牌通常是一个“短期”令牌,并且通过设计,您将有代码在访问令牌过期时使用“刷新令牌”分别获取新令牌;这有助于防止意外损坏长期有效的凭据。这种“刷新”流是厚身份验证库在后台处理的一部分。

虽然API键可用于将调用与开发人员项目关联,但它实际上并不用于授权。Dataproc的RESTAPI与谷歌云平台中的大多数其他付费RESTAPI一样,用于身份验证和授权。如果您希望以编程方式调用API,您可能希望使用一个客户端库,例如,它为低级JSON协议提供了方便的包装,并为您提供了

您还可以使用Google的DirectRESTAPI进行实验,您需要单击右上角的按钮,上面写着“使用OAuth 2.0授权请求”

我还注意到您在Dataproc URI的
regions/
路径下使用了us-central1-f;请注意,Dataproc的区域不会与计算引擎区域或区域一一对应;相反,Dataproc的每个区域将包含多个计算引擎区域。目前,只有一个Dataproc区域公开可用,称为
global
,能够将集群部署到所有计算引擎区域。对于使用oauth2访问令牌的简单说明,如果安装了
gcloud
CLI,您可以简单地将
curl
gcloud
一起使用:

PROJECT='<YOUR PROJECT HERE>'
ACCESS_TOKEN=$(gcloud beta auth application-default print-access-token)
curl \
    --header "Authorization: Bearer ${ACCESS_TOKEN}" \
    --header "Content-Type: application/json" \
    https://dataproc.googleapis.com/v1/projects/${PROJECT}/regions/global/clusters
PROJECT=''
ACCESS_令牌=$(gcloud beta auth应用程序默认打印访问令牌)
卷曲\
--标题“授权:承载${ACCESS\u TOKEN}”\
--标题“内容类型:应用程序/json”\
https://dataproc.googleapis.com/v1/projects/${PROJECT}/regions/global/clusters
请记住,gcloud打印的
ACCESS\u令牌
自然过期(如果我没记错的话,大约5分钟后);关键的概念是,您在每个请求的HTTP头中传递的令牌通常是一个“短期”令牌,并且通过设计,您将有代码在访问令牌过期时使用“刷新令牌”分别获取新令牌;这有助于防止意外损坏长期有效的凭据。这种“刷新”流是厚身份验证库在后台处理的一部分