Dataproc:通过REST API提交Spark作业

时间:2016-06-13 08:34:42

标签: google-cloud-platform google-cloud-dataproc

我们正在使用GoogleCloudPlatform进行大数据分析。对于处理,我们目前正在使用谷歌云数据和&火花流。

我想使用REST API提交Spark作业,但是当我使用api-key调用URI时,我收到以下错误!

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

URI: - https://dataproc.googleapis.com/v1/projects/orion-0010/regions/us-central1-f/clusters/spark-recon-1?key=AIzaSyA8C2lF9kT ************* SGxAipL0

我是从谷歌控制台创建的API> API管理员

1 个答案:

答案 0 :(得分:2)

虽然API密钥可用于将调用与开发人员项目相关联,但它实际上并未用于授权。 Dataproc的REST API与Google Cloud Platform中的大多数其他可计费REST API一样,使用oauth2进行身份验证和授权。如果您想以编程方式调用API,您可能希望使用其中一个客户端库,例如Java SDK for Dataproc,它提供围绕低级JSON协议的便利包装器,并为您提供{{3} }。

您还可以使用Google的handy thick libraries for using oauth2 credentials体验直接REST API,您需要点击右上角的“使用OAuth 2.0授权请求”按钮。

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

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

请记住,gcloud在这里打印的ACCESS_TOKEN本质上会过期(大约5分钟,如果我没记错的话);关键概念是,您在HTTP标头中为每个请求传递的令牌通常是“短期”令牌,并且根据设计,您将拥有在访问令牌使用“刷新令牌”到期时单独获取新令牌的代码“;这有助于防止意外泄露长期凭据。这个“刷新”流程是厚版本库在幕后处理的一部分。