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

Apache Flink流缩放

夏元明
2023-03-14

我是Apache Flink的新手,正在尝试了解一些与Kafka一起扩展Flink流媒体作业的最佳实践。我无法找到合适答案的一些问题包括:

  1. 您可以/应该运行多少个流作业?运行太多流是否存在可扩展性问题?太多是多少?
  2. 如果我们运行假设2,000个流来满足业务需求,那么管理这些流的最佳方法是什么?
  3. 从一个流读取流数据到另一个流的首选方式是什么?我们可以加入流、执行连续查询等吗...?

提前感谢您的支持,如果这些问题看起来有些基本,请道歉,但我正在尝试更好地掌握这项技术。我已经阅读了很多文档,但无可否认,由于我在这方面缺乏经验,可能无法将一些概念整合在一起。谢谢你的帮助!

共有1个答案

夏侯腾
2023-03-14

>

持续查询支持已作为最新flink版本的一部分构建,您可以检查flink留档。

如果在flink术语中,将一个数据流读取到另一个数据流是指连接两个数据流,那么我们可以在一个公共键上连接它们并保持值状态。请注意,值状态在任务管理器中维护,而不是在任务管理器之间共享。否则,如果您暗示两个或多个流的联合,那么我们可以以这样的方式构建FlatMapFunction,即来自这些流的数据以标准格式出现。

工会示例:

val stream1: DataStream[UserBookingEvent] = BookingClosure.getSource(runmode).getSource(env)
      .map(new ClosureMapFunction)

val stream2: DataStream[UserBookingEvent] = BookingCancel.getSource(runmode).getSource(env)
      .map(new CancelMapFunction)

val unionStream: DataStream[UserBookingEvent] = stream1.union(stream2)

---

import org.apache.flink.api.common.functions.MapFunction
import org.json4s.jackson.JsonMethods.{parse => _, parseOpt => _}
import org.json4s.native.JsonMethods._
import org.slf4j.{Logger, LoggerFactory}

class CancelMapFunction extends MapFunction[String, Option[UserBookingEvent]] {
  override def map(in: String): Option[UserBookingEvent] = {
    val LOG: Logger = LoggerFactory.getLogger(classOf[CancelMapFunction])
    try {
      implicit lazy val formats = org.json4s.DefaultFormats

      val json = parse(in)
      ..............
     } catch {
      case e: Exception => {
        LOG.error("Could not parse Cancel Event= " + in + e.getMessage)
        None
      }
    }
  }
}
 类似资料:
  • 我正在尝试为ApacheFlink导入ScalaAPI流扩展,如中所述https://ci.apache.org/projects/flink/flink-docs-master/apis/scala_api_extensions.html 但是,我的ScalaIDE抱怨以下消息:对象扩展不是包的成员org.apache.flink.streaming.api.scala 我使用的是scala 2

  • 我有以下代码来计算socketTextStream中的单词。累积字数和时间窗字数都是必需的。该程序存在累积计数始终与窗口计数相同的问题。为什么会出现这个问题?根据加窗计数计算累积计数的正确方法是什么?

  • 安装(下载 这是Flink的默认配置。 关于这里发生了什么事,有什么建议吗?

  • 我有2个使用kafka主题创建的流,我正在使用DataStream API加入它们。我希望将连接(应用)的结果发布到另一个kafka主题。我在外部主题中看不到连接的结果。 我确认我向两个源主题发布了正确的数据。不确定哪里出了问题。下面是代码片段, 创建的流如下所示。 流连接使用等于的连接执行,如下所示。 如下所述, 有什么线索吗,哪里出了问题?我可以在拓扑中看到可用的消息,谢谢

  • 我想在Apache Flink中实现以下场景: 给定一个具有4个分区的Kafka主题,我想使用不同的逻辑在Flink中独立处理分区内数据,具体取决于事件的类型。 特别是,假设输入Kafka主题包含前面图像中描述的事件。每个事件具有不同的结构:分区1具有字段“a”作为关键字,分区2具有字段“b”作为关键字,等等。在Flink中,我希望根据事件应用不同的业务逻辑,所以我认为我应该以某种方式分割流。为了

  • 我想在Apache Flink中做流媒体工作来做Kafka- 这应该是流式处理。