我正在使用 Apache Flink 的 DataSet API。我想实现一项将多个结果写入不同文件的作业。
我怎样才能做到这一点?
Apache Beam 最近通过注释引入了状态单元,并在Apache Flink 和 Google Cloud Dataflow 中提供了部分支持。StateSpec@StateId
我找不到任何有关将其与GlobalWindow. 特别是,有没有一种方法可以拥有“状态垃圾收集”机制,以根据某些配置摆脱一段时间未见过的键的状态,同时仍然保持已见过的键的单个历史状态足够频繁吗?
或者,在这种情况下使用的状态量是否会出现偏差,无法回收与一段时间未见过的键相对应的状态?
我还对 Apache Flink 或 Google Cloud Dataflow 是否支持潜在的解决方案感兴趣。
Flink 和 direct runner 似乎有一些“状态 GC”的代码,但我不太确定它的作用以及它在使用全局窗口时是否相关。
假设我有2种不同类型的数据流,一种提供天气数据,另一种提供车辆数据,我想使用Flink对数据进行复杂的事件处理。
Flink 1.3.x 中哪种方法是正确的使用方法?我看到了不同的方法,如 Union、Connect、Window Join。基本上我只是想尝试一个简单的 CEP,如下所示:
IF weather is wet AND vehicle speed > 60
WITHIN the last 10 seconds
THEN raise alert
Run Code Online (Sandbox Code Playgroud)
谢谢!
在flink中定义一个时间窗口后如下:
val lines = socket.timeWindowAll(Time.seconds(5))
Run Code Online (Sandbox Code Playgroud)
如何计算该特定 5 秒窗口内的记录数?
我们正在使用 Flink 流在单个集群上运行一些作业。我们的工作是使用rocksDB 来保存状态。集群配置为在 3 个独立的 VM 上使用单个 Jobmanager 和 3 个 Taskmanager 运行。每个 TM 都配置为使用 14GB 的 RAM 运行。JM 配置为以 1GB 运行。
我们遇到了 2 个与内存相关的问题: - 当运行具有 8GB 堆分配的 Taskmanager 时,TM 耗尽了堆内存,我们得到了堆内存不足的异常。我们对这个问题的解决方案是将堆大小增加到 14GB。似乎这个配置解决了这个问题,因为我们不再因为堆内存不足而崩溃。- 尽管如此,在将堆大小增加到 14GB(每个 TM 进程)后,操作系统内存不足并杀死 TM 进程。RES 内存随着时间的推移不断增加,每个 TM 进程达到约 20GB。
1.问题是我们如何预测最大物理内存总量和堆大小配置?
2.由于我们的内存问题,使用非默认值的 Flink 托管内存是否合理?在这种情况下,指导方针是什么?
更多详细信息:每个 Vm 配置有 4 个 CPU 和 24GB 的 RAM 使用 Flink 版本:1.3.2
我在 YARN 上运行我的 Flink 作业,我发现少数子任务的对齐持续时间很长。
什么可能导致这个问题?
假设我有 8 个任务管理器和 16 个任务槽。如果我使用 Jobmanager UI 提交作业并将并行度设置为 8,我是否只使用 8 个任务槽?
如果我有 8 个有 8 个插槽的任务管理器,并以 8 的并行度提交相同的作业怎么办?它是完全一样的吗?或者数据的处理方式有什么不同?
谢谢你。
parallel-processing distributed-computing bigdata apache-flink
尝试使用下面的 rest api 远程运行 flink 作业,但它抛出错误
curl -X POST -H 'Content-Type: application/json' --data '
{
"type": "object",
"id": "urn:jsonschema:org:apache:flink:runtime:webmonitor:handlers:JarRunRequestBody",
"properties": {
"programArgsList" : {
"type" : "array",
"items" : [
"input-kafka-server": "****",
"input-kafka-topics": "****",
"input-job-name": "****"
}
}
}
' http://x.x.x.x:8081/jars/810ac968-5d5f-450d-aafc-22655238d617.jar/run
Run Code Online (Sandbox Code Playgroud)
{"errors":["请求与预期格式 JarRunRequestBody 不匹配。"]}
在 Flink 中,有两件事提供了类似的行为。两者有什么区别。
当您已经可以通过 maxOutOfOrderness 实现相同的行为时,为什么还要使用 AllowedLateness。
如果您只使用 Allowedlateness,则没有必要等待,因为后期元素将无序,因此将被删除。
如果你只使用 MaxOutOfOrderness,那么它会延迟窗口计算,但它可以处理乱序事件。
你能解释一下 Apache Flink v1.9 中任务槽和并行性之间的区别吗?
这是我到目前为止的理解
numberOfSlot can be >= numberOfCpuCores?如果任务槽意味着线程,这可能会导致“共享访问数据问题、竞争条件”等。?这是我的第一个问题。
apply()由于线程环境,我应该关心编写方法吗?:
public class AverageSensorReadings {
public static void main(String[] args) throws Exception …Run Code Online (Sandbox Code Playgroud)