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

从Beam中的另一个管道读取泡菜?

阎咏思
2023-03-14

我在谷歌云数据流中运行批处理管道。我需要在一个管道中读取另一个管道以前写过的对象。最简单的wa对象是pickle/dill。

编写工作很好,编写了许多文件,每个文件都有一个pickled对象。当我手动下载文件时,我可以打开文件。编写代码:beam.io.writeToText('gs://{}‘,coder=coders.dillcoder())

要么...

  File "/usr/local/lib/python2.7/dist-packages/dill/dill.py", line 266, in load
    obj = pik.load()
  File "/usr/lib/python2.7/pickle.py", line 858, in load
    dispatch[key](self)
KeyError: '\x90'

...或者...

  File "/usr/local/lib/python2.7/dist-packages/dill/dill.py", line 423, in find_class
    return StockUnpickler.find_class(self, module, name)
  File "/usr/lib/python2.7/pickle.py", line 1124, in find_class
    __import__(module)
ImportError: No module named measur

(对象的类位于带有measure的路径中,但不确定为什么会错过最后一个字符)

谢谢!

共有1个答案

谢海阳
2023-03-14

ReadFromText被设计为读取文本文件中新的分行记录,因此不适合您的用例。实现FileBasedSource也不是一个好的解决方案,因为它是为读取包含多条记录的大文件而设计的(并且通常将这些文件拆分为碎片进行并行处理)。因此,在您的情况下,Python SDK当前的最佳解决方案是自己实现源代码。这可以简单到读取文件并生成记录的pcollectionpardo。如果pardo生成大量记录,请考虑在后面添加apache_beam.transforms.util.reshuffle步骤,这将允许运行者更好地并行以下步骤。对于Java SDK,我们有fileio,它已经提供了转换,使这一点变得更容易。

 类似资料:
  • 问题内容: 有任何方法可以从具有参数的另一个管道触发管道作业,我已经尝试过 也尝试过 和 没有运气,它说: 项目类型不支持参数 问题答案: 由于子作业是另一个多分支管道项目,因此我需要指定我要运行的分支 现在可以用了

  • 问题内容: 我们没有只介绍ArrayLists数组和2D数组。我需要做的是能够从另一个类的ArrayList中读取。主要目的是在for循环中读取它们,并使用存储在其中的值显示项目。但是,我已经制作了这个快速程序来对其进行测试并不断得到此错误 这是我的代码 然后是ArrayList所在的类 如果有人可以指出正确的方向,那将非常有价值。我尝试调试,但是我可以获得任何帮助。 提前致谢。 问题答案: 严格

  • 问题内容: 我想在我的Java程序中读取c-Application的输出流。 iremoted (可在此处获得:http : _//osxbook.com/software/iremoted/download/iremoted.c_ )是一个C应用程序,如果按下了Apple Remote遥控器上的按钮,它将显示诸如“ 0x19按下”的单独行。如果我启动改头换面的程序,那么一切都会很好,每当我按下一

  • 问题内容: 我需要从另一个目录打开一个图像,但是当我尝试像这样输入整个路径名时,以下代码不起作用。 我正在尝试打开图像。我正在这样做,所以我可以为该代码制作GUI,但是我真的很困。我尝试了很多事情,但似乎没有任何效果。任何建议将不胜感激。 问题答案: 你可以尝试任何一个