从gcloud ml-engine作业访问Big Query

时间:2019-01-07 10:48:05

标签: python google-cloud-platform google-bigquery google-cloud-ml

我有一个python ML进程,它使用环境变量BigQuery指向的本地json文件连接到GOOGLE_APPLICATION_CREDENTIALS(该文件包含google提供的密钥,请参见{ {3}})

在本地运行时,效果很好。

我现在正在寻找通过authentication getting-started部署模型的方法,特别是使用shell命令gcloud ml-engine jobs submit training进行部署。

但是,在运行过程并查看console.cloud.google.com/logs/viewer中的日志后,我发现gcloud无法访问Bigquery,并且出现以下错误:

 google.auth.exceptions.DefaultCredentialsError: File:
 /Users/yehoshaphatschellekens/Desktop/google_cloud_xgboost/....-.....json was not found.

当前,我不认为gcloud ml-engine jobs submit training随身携带Json文件(我认为gcloud可以自动访问BigQuery,我想不是)

一个可选的解决方法是将个人.json文件保存到另一个子包文件夹中的python依存关系中(请参见Google's Ml engine)并导入。

此解决方案是否可行/安全?

此问题还有其他解决方法吗?

2 个答案:

答案 0 :(得分:2)

路径应为绝对路径,在Windows中应使用反斜杠:

GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"

在您的Python代码中以这种方式设置:

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "C:\PATH.JSON"

带有Google翻译API here的示例。

答案 1 :(得分:1)

我最终要做的是将json上载到gcloud存储桶,然后在每次启动ML引擎训练过程时都将其上载到我的项目中:

os.system('gsutil cp gs://secured_bucket.json .')
os.environ[ "GOOGLE_APPLICATION_CREDENTIALS"] = "......json"