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

在GCS上超过240万个文件的Google Dataflow上运行管道时,Apache Beam的FileBasedSource出现混乱错误

凤自珍
2023-03-14

我在Google Dataflow上运行了一个Apache Beam管道,它从GCS读取GZIP压缩的JSON数据,转换它们,并将它们加载到Google BigQuery中。管道在样本批数据上的工作与预期的一样,但是当我试图在整个数据上运行它时(~2.4百万个文件),它有时会引发一个令人困惑的错误,在几次出现后就会破坏进程。

错误是:

我知道错误涉及的阶段是getData:

files = (p
         | 'Init' >> beam.Create([files_pattern])
         | 'GetData' >> ReadAllFromText())

其中p是管道对象,files_patterngs://{bucket}/{prefix}/*.json.gz形式的glob。

共有1个答案

韩彦君
2023-03-14

我建议使用数据流洗牌。数据被保存在Dataflow后端,而不是将洗牌数据放在VM的持久磁盘中。当错误消息提到索引超出范围,并且从注释中可以看出作业使用较少的数据运行时,所发生的情况是内存或存储不足。

此外,请记住,您可以使用Google提供的Dataflow模板。请记住,这些模板是用Java编写的,而不是用Python编写的。其中一个模板是BigQuery的GCS文本。

 类似资料:
  • 我在Google云存储上有超过10万个包含JSON对象的文件,我想创建一个镜像来维护文件系统结构,但从文件内容中删除一些字段。 我试图在谷歌云数据流上使用Apache Beam,但它拆分了所有文件,我不能再维护结构了。我正在使用。 我的结构类似于<code>reports/YYYY/MM/DD/ 如何使数据流不拆分文件并使用相同的目录和文件结构输出它们? 或者,是否有更好的系统对大量文件进行此类编

  • 因此,我试图在Laravel框架内与旧的文件上传做斗争,但有点迷失了方向。我已经设法让上传工作,所以文件上传并保存到一个随机字符串名的资产文件夹。 这是表格: 这是路线: 这是AccountController内部的方法: 我现在试图启用,以推动字符串名称到数据库,也与上传它的用户相关联,并显示为他们的个人资料图像?Ay指针会很棒! 我在数据库中创建了一行名为文件的文本类型......我不确定在这

  • 在为windows 7 64位运行jmeter(4.0版)批处理文件时,我发现以下错误:findstr未被识别为Internal或外部命令、可操作程序或批处理文件。找不到java可执行文件或版本我已将系统变量也设置为“C:\apache-jmeter-4.0\bin”,并检查是否安装了java版本和JDk(9.4版本)。

  • 目前我有以下问题。我已经编写了一个Jenkinsfile来在管道中构建我的存储库。每个存储库在多分支管道中都有自己的管道。每当我推动存储库时,管道就会开始工作。 对于这个建筑,我有一个带有两个节点的代理。当多分支管道运行时,多分支管道使用一个节点来执行单个管道,第二个节点由当前正在执行的管道使用来运行单个作业。 当两个管道同时运行时,两个管道都使用一个节点。但是现在的问题是两个管道都无法启动任何作

  • 问题内容: 在Swift之前,在Objective-C中,我会使用混淆或钩住类中的方法。 如果有人对修改Swift的运行时以及挂钩功能(如CydiaSubstrate)和其他在此方面提供帮助的库有任何信息,请通知我。 问题答案: 我已经在Swift中成功使用方法。本示例说明如何在NSDictionary上挂钩描述方法 我的实现: 混乱的代码: 编辑: 此代码适用于从 NSObject 继承的任何自

  • 我试图使用Eclipse IDE在Apache Tomcat上执行一个简单的servlet。servlet本身正在执行,但当我试图调用html表单时,我将通过该表单向servlet传递用户数据,我得到错误404。我的做法是不正确的吗? 更新1:文件web.xml