0

我有一个与 apache flink 相关的问题。目前我正在研究 apache flink 作为我们的工作框架。

本质上,我们有一个内容摄取工作,我们从提要中摄取一些内容,这些内容本质上是分页的。提要的内容可以是 xml 或 json 格式,每页可以有 1000 条记录。

我需要的是把这 1000 条记录分成任务并并行处理。

我知道 flink 有一些方法可以并行化它的工作,但分成任务槽。我想知道我们如何做到这一点,否则任何在线资源将不胜感激。

我看到我们可以使用 setParallelism() 进行设置,但我很难找到一种方法来设置处理。

所以只是给你一个想法..这是一个示例提要

<mainTag>
    <subTag>
    ......
    </subTag>
    <subTag>
    ......
    </subTag>
    <subTag>
    ....
    </subTag>
</mainTag>

现在在上面的 xml 示例中,我想划分并并行处理它。

这类似于我们如何在 java 中使用 ExecutorService 进行多线程处理。

在普通的 java 中,我会执行 executorService.submit(subtagTask) 来处理 subTag。

我想知道在 Flink 中是否有办法做到这一点。这将帮助我避免处理线程的头痛和随之而来的头痛。

任何帮助表示赞赏。

问候。

4

1 回答 1

0

好消息:Flink 专为并行运行而构建,您无需担心线程或其他事情。在大多数情况下,当涉及到横向扩展(= 使用多台机器)时,您会使用 Flink。但是,扩大规模(每台机器有更多线程)是一个有效的用例。请注意,可能还有其他更简单的选择。

坏消息:没有对 XML 的开箱即用支持。添加起来并不难,但这可能就是您要寻找的。直接支持 JSON,但也不支持完整文件 afaik。主要原因是 Flink 原本是流处理器,还在向统一/批处理处理器过渡。

所以我想,在你的情况下,现在评估替代品(例如 Spark)会更好。在这方面,Flink 仍然需要在接下来的几个版本中赶上。

于 2021-05-19T06:43:58.487 回答