当前位置: 首页 > 知识库问答 >
问题:

尝试从Apache Beam访问Google Cloud Storage时出错

齐向笛
2023-03-14

我试图使用Apache Beam从Compute Engine VM简单访问Google Cloud存储。当然,我已经使用命令gcloud auth应用程序默认登录设置了默认应用程序登录,并为计算引擎服务号添加了对存储的访问权限。我使用DirectRunner运行了管道并得到错误:apache_beam.io.filesystem.BeamIOError:匹配操作失败,有异常{'gs://{this MY BUCKETNAME}/source/sales_transactions.csv': HttpForBiddenError()}

#import print library
import logging

#import apache beam library
import apache_beam as beam

#import pipeline options.
from apache_beam.options.pipeline_options import  PipelineOptions

#Create a pipeline
plOps = beam.Pipeline(options=PipelineOptions())

#--------------------------------------------------
# 1.Read from a text file.
#--------------------------------------------------

#Read the file from Google Cloud Storage
transactions = ( plOps 
                | 'Read Transaction CSV'
                    >> beam.io.ReadFromText('gs://{THIS MY BUCKETNAME}/data/sales_transactions.csv')
                )

printSize(transactions,'Raw Transactions')

共有2个答案

缑兴贤
2023-03-14

是 啊我解决了它。只需重新创建默认的应用程序凭据,我真的不知道它们出了什么问题。我已经毫不含糊地做到了。否则文件夹/根/。配置/gcloud不存在。但凭证出现了问题。

那么,如何解决它:1。sudo su 2。删除文件夹/根/。配置/gcloud 3。再次运行gcloud auth应用程序默认登录

祝你好运!

楚和悌
2023-03-14

我已经部分解决了这个问题——阅读正常。我在DEVELOPER MACHINE上使用sudo su按root登录,Apache Beam可以访问从GS读取文件。但是当我尝试像这样写入GS存储桶时

#Write output to a text file
( custTypeCount | 'Write to GS Text'
        >> beam.io.WriteToText('gs://{MY BUCKET NAME}/output/customertype-summary.txt')
)  

脚本获取错误:

RuntimeError: HttpForbiddenError: HttpError accessing <https://www.googleapis.com/resumable/upload/storage/v1/b/{MY BUCKET NAME}/o?uploadType=resumable&alt=json&name=output%2Fbeam-temp-customertype-summary.txt-7bea505ad0bf11e9b69c42010a800002%2F55a9057e-18e5-4171-9db4-9e55601b2a8d.customertype-summary.txt>: response: <{'status': '403', 'content-length': '208', 'vary': 'Origin, X-Origin', 'server': 'UploadServer', 'x-guploader-uploadid': 'AEnB2Upo4RBzVV1S51_uWhcCiK_uK_iOSRAdAb8HWMhxznaPr0JcHKWxKDLwHbtTIYvHuMjyESV4dZqAfN3TaWYMqr5gQeypcQ', 'date': 'Fri, 06 Sep 2019 16:00:44 GMT', 'content-type': 'application/json; charset=UTF-8', 'www-authenticate': 'Bearer realm="https://accounts.google.com/"'}>, content <{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "Insufficient Permission"
   }
  ],
  "code": 403,
  "message": "Insufficient Permission"
 }
}
> [while running 'Write to GS Text/Write/WriteImpl/WriteBundles']

我不知道应该添加什么权限

 类似资料:
  • 我带着一个我无法解决的问题来到这里。 我在版本1.7中有一个prestashop,我已经移动到另一台服务器,值得一提的是,在旧服务器中,prestashop运行良好。 当我将prestashop迁移到新服务器时,除了我想进入后台,当我想进入后台时,只需将页面留空,其他一切都可以正常工作。 我已经激活了调试模式,但它没有给我任何与后台相关的错误,有趣的是,当调试模式被激活时,我可以毫无问题地进入后台

  • 拜托,我需要一些关于Prestashop问题的帮助。我在OVH共享主机上运行Prestashop 1.7。直到昨天早上,一切都很顺利,但后来我再也无法访问后台,反而出现了错误500。门脸还在工作,我还在接受订单。 资料: 我没有升级任何东西,无论是网站还是任何模块。 当我启用调试模式(define.inc.php),后台再次工作,但前台得到一个错误:前台错误。当我试图从后台重新生成. htacce

  • PS C:\用户\\桌面\实时聊天应用程序\nodeserver>nodemon index.js 这是错误nodemon:文件C:\users\\appdata\roaming\npm\nodemon.ps1无法加载,因为在此系统上禁用了运行脚本。有关详细信息,请参阅https://go.microsoft.com/fwlink/?LinkId=135170上的about_Execution_P

  • 下面是我的配置: 在server.xml中(来自Tomcat) 在web.xml中(来自Tomcat) 在web.xml中(来自我的项目) 和我的项目结构: 最后,看看日志,我想不出我的应用程序部署在哪里: 感谢任何帮助!

  • 我有一台mac电脑,正在尝试使用Shutil库的基本复制或移动功能。 每当我运行代码时,控制台都会打印一个错误: 或者类似于那个错误的东西。 下面是我的代码: 代码应该将单个文件从scr文件夹复制到最大文件夹。 我试图改变目录和打印目录使用: 这是我使用以下命令时遇到的错误:PermissionError:[Errno 1]操作不允许

  • 我有一个应用程序,通过Dropbox Javascript SDK尝试下载文件。我不知道怎么了。通过fetch调用访问Dropbox API,直接导致相同的错误。Dropbox API文档指出,错误400是因为输入参数不正确,而我发送的似乎没有问题-“Dropbox API参数”:“{\”path\“:\”/1/price.xlsx \“}”