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

在apache beam中通过大型管道选项的最佳实践

赫连子石
2023-03-14

我们有一个用例,希望将数百行json规范传递给我们的apache beam管道。?一种直接的方法是创建自定义管道选项,如下所述。有没有其他方法可以将输入作为文件传递?

public interface CustomPipelineOptions extends PipelineOptions {
    @Description("The Json spec")
    String getJsonSpec();
    void setJsonSpec(String jsonSpec);
}

我想在Google数据流引擎中部署管道。即使我将规范作为filepath传递并在启动管道之前读取波束代码中的文件内容,我如何捆绑管道的规范文件部分。注意,我不想在我的波束代码可用的地方提交源代码的规范文件(在资源文件夹中)部分。它需要可配置,即我想为不同的波束管道作业传递不同的规范文件。

共有2个答案

干高歌
2023-03-14

Beam管道选项,顾名思义,旨在提供小的配置参数来配置管道<代码>管线选项通常在作业提交时读取。因此,即使您使用管道选项获取json spec to job submission程序,也必须确保您编写的程序在运行时能够访问此文件。为此:

  1. 您必须将文件保存在数据流虚拟机可以访问的分布式存储系统中(例如,GCS)

有多种方法(2)。例如

  • 直接将文件路径传递给DoFn的构造函数。
  • 传入文件路径作为转换的侧输入(允许您在运行时配置它)
彭星津
2023-03-14

您可以将选项作为POJO传递。

public class JsonSpec {
    public String stringArg;
    public int intArg;
}

然后在选项中引用

public interface CustomPipelineOptions extends PipelineOptions {
    @Description("The Json spec")
    JsonSpec getJsonSpec();
    void setJsonSpec(JsonSpec jsonSpec);
}

选项将被解析为类;我相信杰克逊的话,但我不确定。

我想知道为什么要将“数百行JSON”作为管道选项传递?这似乎不是一种很“梁”的做事方式。管道选项应通过配置;您真的需要每个管道运行数百行配置吗?如果您打算传递数据以创建PCollection,那么最好使用TextIO,然后将行处理为JSON。

 类似资料:
  • 问题内容: 我在https://reactnavigation.org/docs/navigators/drawer中使用DrawerNavigator 。 我有多个正在使用具有不同道具的组件的屏幕。 我该怎么做: 问题答案: 在许多情况下,我认为更好的方法是: 这会将您的导航道具放入props.navigation.state.params中。如果您希望它们出现在this.props中(这意味着

  • 问题内容: 我正在玩Golang,我创建了这个小应用程序,使用goroutines进行了多个并发的api调用。 当应用程序运行时,调用完成后,该应用程序将卡住,这是有道理的,因为由于通道未关闭,无法退出 范围c 循环。 我不确定在哪种情况下可以更好地关闭该通道。 问题答案: 当没有更多值要发送时,您将关闭通道,因此在这种情况下,所有goroutine已完成。 (请注意,from 仅将反映连接和协议

  • 问题内容: 我必须在php中解析大型XML文件,其中之一是6.5 MB,它们甚至可能更大。如我所读,SimpleXML扩展将整个文件加载到一个对象中,这可能不是很有效。以您的经验,最好的方法是什么? 问题答案: 对于大文件,您将要使用SAX解析器而不是DOM解析器。 使用DOM解析器,它将读取整个文件并将其加载到内存中的对象树中。使用SAX解析器,它将顺序读取文件并调用用户定义的回调函数来处理数据

  • 问题内容: 在我的主页上,我有一个用户列表,我想选择并打开一个频道与其中一个聊天。 我在想是否最好使用id并控制对诸如USERID1-USERID2之类的频道的访问。 但是,当然,用户2也可以打开相同的频道,因此我想找到更易于控制的内容。 请,如果您想帮助我,请使用firebase网址/数组在JavaScript中给我一个示例。 谢谢! 问题答案: 处理此类1:1聊天室的常用方法是根据用户ID生成

  • 问题内容: 我有大量的数据,用户必须从中选择一个。我正在考虑一种实现它的方法(当然,在GUI中)。我有一些想法。但只是想在这里发布,因为可能会有更好的选择。 说,用户必须从大量的用户群中选择一个名称。如果我只是为用户输入一个文本字段来输入名称,那么可能会出现诸如以不同格式输入相同名称,拼写错误等问题。 我在这里看到两个选择 使用组合框 使用列表(实际上,我在想类似的东西。由于空间问题,我无法始终显