我在弗林克做实时流媒体,卡夫卡是消息队列。我正在应用120秒的EventTimeSlidingWindow。然后滑1秒。我还在事件时间的每一秒插入水印
我关心的是,如果元素在水印之后延迟出现,会发生什么?在我的例子中,Flink只是简单地丢弃了相应水印后面的消息。filnk是否提供了任何机制来处理此类延迟消息,比如维护单独的窗口?我也阅读了文档,但没有弄清楚 Apache Flink有一个概念,要求窗口处理在水印之后到达的数据。默认情况下,当水印超过窗口末尾时,会删除延迟元素。但是,Flink允
标签: Apache Flink
complex-event-processingflink-streamingflink-cep
我想知道弗林克是否能按我所需要的方式表演
使用CEP库进行模式匹配,是否可以基于初始模式匹配设置多个流
例如,一条消息进入并匹配模式x1,然后下一条消息匹配模式y1,下面是y2,下一条是x2。
Flink是否有办法区分多组模式,并在指定的时间内持续查找每个模式匹配
还是Flink只是忽略了与模式下一部分不匹配的消息?如果顺序是x1>y1>y2>x2,它会忽略y1和y2吗,因为它们与x1的模式不匹配?你能再解释一下你的意思吗?可能有一些模式的代码示例?我基本上需要多个具有不同流模式的文件。我现在正
我正在研究可以插入数据流的水印类型
虽然这可能超出了水印的用途,但我还是会问
您能否创建一个包含时间戳和k/v对的水印(this=that,that=this)
因此,水印将保存{12DEC180500GMT,this=that,that=this}
或
{时间戳,kvp1,kvp2,kvpN}
这样的事情可能吗?我已经查看了用户和API文档,但可能忽略了一些内容不,Flink中的水印类
(发现于
flink/flink streaming/java/src/main/java/org/apac
我有5个不同任务的数据管道。如果任务中存在任何异常,则将其移动到错误kafka主题。是否有任何异常处理程序挂钩我建议使用Flink来收集异常,然后将它们输出到Kafka主题
final OutputTag<String> outputTag = new OutputTag<String>("side-output"){};
SingleOutputStreamOperator<Integer> task1 = ...;
SingleOutputStreamOp
我们让Flink job使用来自Kafka的数据,并将其摄取到多站点复制的Cassandra
现在我们必须每小时聚合数据。
问题是设备X可以在站点A和站点B报告一次。这意味着该设备的某些消息将由站点A中的Flink处理,而某些消息将在站点B中处理
我想要一个聚合结果,它将反映特定设备X传输的所有消息
是否有处理多部位摄入的最佳实践?你知道如何处理上述情况吗?
提前谢谢
我是Flink的新手,我正在尝试使用它来获得我的应用程序的一系列实时视图。我想构建的动态视图中至少有一个是显示未满足SLA或基本上已过期的条目,条件是进行简单的时间戳比较。所以我基本上希望在我的动态表中显示一个条目,如果它最近没有被事件触及。在开发环境中,由于AWS的动态性,Flink 1.6被限制在这一点上,我没有看到Flink在重新评估一个条件,除非事件触及该条目
我已经将我的开发环境插入了一个Kinesis流,该流正在从web服务器发送实时访问日志事件。这不是我真正的用例,但它很容易开始测
我在IDE中运行了以下简单的flink应用程序,我每5秒钟做一次检查点,并希望将检查点数据写入目录file:///d:/applog/out/mycheckpoint/,但运行一段时间后,我停止了应用程序,但是我在目录下没有找到任何东西file:///d:/applog/out/mycheckpoint/
代码是:
import java.util.Date
import io.github.streamingwithflink.util.DateUtil
import org.apache.
ApacheFlink能否用于保存到数据库,然后以容错方式发布到kafka?若未能发布到kafka,则不应保存到数据库或继续发布。我们可以用flink来解决这个问题吗?我认为解决这个问题最简单的方法是将管道分成两个独立的作业/服务。第一个可以是一个简单的Flink作业,完成它需要做的事情,然后将输出写入Kafka。另一个可能是一些外部服务/卡夫卡连接/lambda或Flink作业。它将数据从卡夫卡流到数据库
通过这种方式,您可以确保,如果第一个作业无法生成任何内容,则不会向数据库生成任何内容
我正在用PythonSDK试用有状态函数2.1API,但我看不到一个明确的方法,即如何在不阻塞应用程序的情况下对外部API进行异步调用
这是可能的,还是有人可以发送正确的路径给我?从StateFun 2.2.0开始,您可以使用AsyncRequestReplyHandler
从:
Python SDK附带了一个额外的处理程序,
AsyncRequestReplyHandler,它支持Python的可等待函数
(协同程序)。此处理程序可与异步Python一起使用
框架,例如aiohttp
您可以看
我在我的flink工作中有以下代码:
@Override
public void open(Configuration config) {
this.counter = getRuntimeContext()
.getMetricGroup()
.counter("myCounter");
}
@Override
pub
我的要求是将30天的数据保存到流中,以便在任何一天进行处理。所以,FLINK应用程序启动的第一天,它将从数据库中获取30天的数据,并将合并到当前流数据。
我的挑战是管理30天的数据窗口。如果我创建滑动窗口30天,滑动时间为1天。差不多
WatermarkStrategy<EventResponse> wmStrategy = WatermarkStrategy.<EventResponse>forBoundedOutOfOrderness(Duration.ofMilli
当我的应用程序与IO(数据库,第三个API,…)交互时,我使用Async作为Flink的推荐。
但是我的应用程序通常与DB交互,我应该始终使用async吗
我有很多问题:
如果我使用async(completablefuture),那么我的应用程序就不会像使用sync code=>时那样被阻塞。就性能而言,async code是更好的同步代码吗
如果我使用同步代码并增加并行性,性能如何
当我使用异步代码时,过了一段时间,我的应用程序抛出异常“邮箱处于关闭状态,但需要处于打开状态才能执行put操作
总之,我仍然不清楚为什么我的Flink工作的检查点会随着时间的推移而不断增加,目前,大约连续7天,这些检查点从未达到稳定状态。
我目前使用的是Flink 1.10版本,FS State后端,因为我的工作负担不起使用RocksDB的延迟成本
查看检查点在7天内的演变:
假设我对所有有状态运算符中的状态TTL进行了一小时或更长时间的配置,在一种情况下是一天:
public static final StateTtlConfig ttlConfig = StateTtlConfig.newBuilde
标签: Apache Flink
flink-streamingdocker-desktopflink-cepflink-sql
需要以下错误的帮助,因为我似乎找不到实际问题。我正在尝试在win10 professional的docker桌面上运行flink cluster
Dockerfile:
FROM container-registry.ubs.net/flink:1.11
ADD build/libs/demoapp-service-all.jar /opt/flink/usrlib/demoapp-service-all.jar
volume /tmp
ADD conf/flink-conf.yaml /opt
我已经实现了一个flink flatmap函数,我想收集这个函数的平均时间指标,我计划通过普罗米修斯进行监控
什么样的方法比较好?我在方法中添加了一个仪表(从FlinkAPI扩展仪表接口)
它会工作吗?它是否工作取决于如何创建仪表。如果您使用的是普通的flatmap函数,那么您可能应该切换到richflattmap函数,然后初始化并注册仪表getRuntimeContext
此外,您可能想了解一下度量类型,因为在这种情况下,直方图似乎比测量更好,因为在大多数情况下,测量平均延迟通常不是最好的方法
我正在尝试构建一个Flink作业,该作业将从卡夫卡源读取数据并进行一系列处理,包括很少的REST调用,然后最终进入另一个卡夫卡主题
我试图解决的问题是消息重试。如果RESTAPI中存在暂时性错误怎么办?我怎样才能像Storm支持的那样对这些消息进行基于指数退避的重试
我有两种方法可以考虑
使用TimerService,但如果出现故障,状态将开始不可控地扩展
将失败的消息写入另一个卡夫卡主题,并以某种延迟处理它们,但如果接收器本身停机几分钟,问题就会出现
有没有更好、更健壮、更简单的方法来实现这一
我们有flink-conf.yaml用于项目中的本地运行。我们希望能够在本地运行flink进行测试。我们团队的一部分使用Mac电脑,另一部分使用PC电脑。我们希望将state.checkpoint.dir设置为某种普遍可接受的路径,最好是在用户的主目录下。问题是,是否可以根据我们正在运行的操作系统以编程方式设置它,如果不可以,在这个设置中是否有一个通用的有效快捷方式用于当前用户的主目录,如*NIX上的“~”?下面的示例演示了如何以编程方式设置Flink的配置设置:
Configuration c
我想执行我的FlinkScala程序,而不将结果写入文件。不将结果DataSet保存到DataSink中就无法运行程序。所以我尝试了.writesText(“file:///dev/null,WriteMode.OVERWRITE)。那没用。发生以下错误:
> java.io.IOException: Output path 'file:/dev/null' could not be
> initialized. Canceling task... at
> org.ap
我在理解事件时间窗口的语义方面遇到了一些困难。下面的程序生成一些带有时间戳的元组,这些元组用作事件时间,并执行简单的窗口聚合。我希望输出与输入的顺序相同,但输出的顺序不同。为什么输出与事件时间不符
import java.util.concurrent.TimeUnit
导入org.apache.flink.streaming.api.TimeCharacteristic
导入org.apache.flink.streaming.api.windowing.time.time
导入org.apa
在Apache Spark Streaming中,ReduceByKayandWindow允许用户在旧数据过期时提供反向函数。程序员可以使用此函数来减少已删除事件的计数值
我想知道如何在Apache Flink中实现同样的效果。这是Flink不使用的特定于Spark的构造,因为它的窗口实现工作方式不同。它用于滑动窗口,用于“撤消”聚合
由于Flink不需要跨小批量(但只需跨内部窗格)进行最终聚合,也不需要将窗口与小批量对齐,因此这一技巧是不必要的,它也可以非常快速地工作。我认为这是Flink不使
我正在用parallelism 1运行flink流媒体作业
8小时后,工作突然失败了。它表明
Association with remote system [akka.tcp://flink@192.168.3.153:44863] has failed, address is now gated for [5000] ms. Reason is: [Disassociated].
2017-04-12 00:48:36,683 INFO org.apache.flink.yarn.YarnJ
我有一个数据流。我必须将窗口功能应用为1小时、2小时、3小时……24小时。每个分割都有自己的窗口功能
如何以有效的方式拆分窗口
我能想到的最肮脏的方式是
for(int i=1; i < 24 ;i++){
inputStream.keyBy("id").timeWindow(Time.hours(i)).apply(..);
}
for(int i=1;i
我正在按照文档进行操作
我注册timestamp字段如下
KafkaTableSource source = Kafka08JsonTableSource.builder()// set Kafka topic
.forTopic("alerting")
// set Kafka consumer properties
.withKafkaProperties(getKafkaProperties())
我已经安装了ApacheFlink1.4,并且使用DataSetaAPI实现了几个任务。现在,我想尝试使用表API,但似乎无法导入它
我还需要安装其他东西吗?似乎其他人在导入表API时没有遇到任何问题
您需要在pom.xml中导入flink表依赖项,例如:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table_2.11</artifac
我有一个4节点的独立Flink群集。每个节点上都有一个TaskManager(TM a、TM B、TM C、TM D),每个TaskManager有2个插槽(A1、A2、B1、…、D2)
作业的源以并行8运行。
源有6张地图/平图(所有的都是PAR 2)。
在检查流程时,意识到所有flatMap操作都使用相同的TM插槽(这没问题),但整个作业仅使用2个TM。所以负载是非常不平衡的
为什么会有这种行为?如何平衡负载?我假设par2意味着并行2
因此,作业的默认并行度为8,但您正在更改flatMap
在Flink SQL中使用SQL客户端时,我们如何使用查询配置
与以下链接中提到的相同的时尚
要使用空闲状态保留时间。Flink的SQL客户端可以在启动时读取YAML配置文件,该文件可以包含空闲状态保留规范。例如,您可以通过以下方式启动客户端:
sql-client.sh embedded-e sql client config.yaml
其中配置文件包含
execution:
planner: old # optional: either 'ol
我启动了一个flink应用程序,每个TaskManager都有nTaskManager和s插槽,因此,我的应用程序将有n*s个插槽
这意味着,flink最多可以同时运行n*s子任务。但是为什么flink不尝试使用大多数资源来运行尽可能多的子任务,而麻烦最终用户显式地设置并行性呢
对于不知道并行度设置(默认值为1)的flink初学者,即使有更多资源,它也总是只运行一个子任务
我想知道这里的设计考虑,谢谢 Flink群集也可以由多个用户使用,或者单个用户可以在群集上运行多个作业。此类集群的大小不是为
当我希望更新值状态(queueState.update(queue))捕获此异常时:
org.apache.flink.util.FlinkRuntimeException: Error while adding data to RocksDB
at org.apache.flink.contrib.streaming.state.RocksDBValueState.update(RocksDBValueState.java:108)
at xxx.xxx.xxx.CleanTi
我正在尝试使用以下方式从flink kafkaconsumer中传输数据:
这里我的卡夫卡是Kerberos安全的,并且支持SSL
我正在EMR 5.31上运行Flink流式纱线簇
我得到以下与领域KRB5相关的错误
Caused by: org.apache.kafka.common.errors.SaslAuthenticationException:
Failed to create SaslClient with mechanism GSSAPI
Caused by: javax.s
我有一个StreamingFileLink,它使用StreamingFileLink.forRowFormat(…)序列化协议缓冲区消息
返回StreamingFileSink
.forRowFormat(新路径(输出目录),编码器)
.带BucketAssigner(新型PathBucketAssigner(目录标签))
.withRollingPolicy(…)
我应该如何读回这个文件`ExecutionEnvironment.readFile(…)?我应该使用哪种输入格式
return
当特定时间过去时,如何在Flink中设置触发器以执行某些操作?
例如:每天下午1点的流总和AKeyedProcessFunction可以使用计时器在特定时间触发操作(基于每个键)。它们可以是使用系统时间的处理时间计时器,也可以是由水印触发的事件时间计时器
以下是文档中教程中的每个示例:
另见
请注意,如果您不想以键分区的方式应用计时器,而是需要对整个数据流进行操作(即,不并行),则可以使用keyBy(constant)进入键控上下文,而不实际对流进行分区。这会根据程序启动的时间生成窗
我想使用早期触发逻辑进行窗口聚合(您可以认为聚合是由窗口关闭或特定事件触发的),我在文档上读到:
文档提到,注意,对于简单的聚合(如count)使用ProcessWindowFunction效率很低
据我所知,key-value-state接口允许在流中出现故障后恢复状态,但在重新部署流后无法恢复状态
如果我想在重新部署后恢复状态,我应该实现检查点接口,并使用检查点接口的方法将状态从/保存到键值状态(+不要忘记在部署前创建保存点,并使用创建的保存点运行新流)。对吗?使用本地用户实例状态的checkped界面或通过RuntimeContext获得的每键状态检查并正确恢复状态。实际上,使用每键状态更容易,因为您不需要实现任何检查点代码
如果要显式停止Flink作业,并在稍后恢复检查点状态的情况下
我想在Flink的WindowedStream上执行一些操作,比如说average。
但可用的预定义操作非常有限,如sum、min、max等
val windowedStream = valueStream
.keyBy(0)
.timeWindow(Time.minutes(5))
.sum(2) //Change this to aver
我正在为数据流开发ApacheFlink,我没有什么问题。非常感谢您的帮助。谢谢
1) 创建翻滚窗口是否有任何限制。例如,如果我想为每个用户id创建一个翻滚窗口,持续2秒,假设我的用户id超过1000万,这将是一个问题。(我正在使用keyBy用户id,然后创建一个2秒的时间窗口)?这些窗口在flink内部是如何维护的
2) 我研究了循环分区的再平衡。假设我设置了一个集群,如果我的源代码的并行度为1,并且如果我进行了重新平衡,我的数据是否会在不同的机器之间进行洗牌以提高性能?如果有,是否有特定的端
目前有从Flink Dashboard上传jobs JAR的规定。这是一个手动过程。有没有办法通过maven命令自动化这个过程。类似于ApacheBeam如何使用FlinkRunner,您可以在其中打包maven项目,并使用maven命令本身提交 目前,Maven没有这样的插件,允许您直接通过Maven提交作业。但是,在构建作业后,如果运行flink群集,则始终可以通过flink run提交作业。我创建了一个maven插件,该插件调用http API上载并运行作业。由于我是java/Flink新
我有一个事件时间处理管道
比如:
env.keyBy(_.key).process(myProcessFunction)
process函数仅处理带水印的事件(这是因为它要求对事件进行排序,并根据排序发出事件)。这样一个过程函数已经展示了很多次,第一次类似于我在谷歌上发现的。简而言之,它看起来是这样的:
class MyProcessFunction extends ProcessFunction[Input, Output] {
def open(config: Configurati
我可以将数据流时间窗口设置为24小时这样的大值吗?之所以需要这样做,是因为我想根据网站最近24小时的客户端流量进行数据统计。这样,我就可以检查是否存在安全违规行为
例如,检查用户帐户是否使用多个源IP登录到网站。或者检查某个IP在最近24小时内访问了多少个唯一页面。如果检测到安全违规,将实时执行配置的操作,例如阻止源IP或锁定相关用户帐户
该网站的吞吐量约为200Mb/s。我认为将时间窗口设置为较大的值会导致内存问题。我应该将每个时间窗口的统计结果(如5分钟)存储到数据库中吗?
然后根据数据库查
我正在尝试为卡夫卡·阿夫罗系列主题创建一个flink消费者。
我有卡夫卡主题流式avro序列化数据。我可以通过avroconsolleconsumer看到它
Flink 1.6.0添加了一个AvroDeserializationSchema,但我找不到它的完整用法示例。是的,在1.6.0之前添加的类中,有一些生成了avrodeserialization类
我有一个通过avro工具生成的avro类
现在,我一直在尝试遵循现有的例子,但它们的差异太大,我无法让事情继续下去。(我不经常用Java编程)
运行follow命令将作业提交给Thread,但不需要分配任务管理器的数量。集群有足够的资源
我们可以从信息日志中看到,发送到纱线的参数是
{masterMemoryMB=2048,taskManagerMemoryMB=2048,numberTaskManagers=4,slotspartaskmanager=2},但是,flink WebUI中只有一个taskManager
使用
warn session.sh和-n也遇到了相同的问题,即命令行中任务管理器的控制数量不起作用
flink版本
如何检查flink纱线会话是否已在flink群集中运行
特别是,我希望以编程方式检查此问题,并在会话未作为自动部署的一部分运行时启动会话
似乎没有任何明显的命令。如果它已经在运行,Flink的REST API将在某个端口上侦听。您可以使用类似于curlserver:8081的东西来查看它是否可用。如果没有运行,curl将以7的状态退出,以指示连接被拒绝 我最后用了这个:
/usr/bin/yarn application -list 2>/dev/null | grep -i "Flink
我们有一个flink集群,它每小时处理批处理作业。不幸的是,在运行了几天后,我们发现系统变得越来越慢。即使集群中没有作业运行,cpu成本也会很高。重新启动taskmanager后,系统再次变快。有人能给我们一些提示或参考来解释这种情况吗?你能提供一些日志吗?你有一个每小时接收一批输入的作业吗?还是每小时开始一个新作业?如果是后者,您是否真的结束了作业?您能否提供一些日志?您是否有一个作业每小时接收一批输入,还是每小时开始一个新作业?如果是后者,你真的结束了工作吗?
我有自己的分区技术,为数据流元组生成键,这些键的范围等于集群中的节点数,例如,如果我将并行度设置为4,则生成的键将为0、1、2和3,依此类推,然后每个键都应分区到同一节点,以使用键控状态执行更多键控处理
发生了什么:我已经使用keyBy实现了我的逻辑,这样我就可以使用一个键控状态,但是它有一个很大的偏差,一些节点没有收到任何记录,而其他节点收到了多个记录。我尝试过使用自定义分区,它按照我的要求进行了物理分区,但是如果不使用keyBy,我就不能使用keyed状态
是否有一种方法可以控制偏斜或强制在
在JSONDeserializationSchema中获取错误:无法将JSONDeserializationSchema解析为类型
DataStream<ObjectNode> messageStream = env.addSource(
new FlinkKafkaConsumer09<>("test2"
, new **JSONDeserializationSchema()
我使用了flink1.10.0一段时间,发现了一个奇怪的问题
我提交同一份工作两次
$flink列表-r
2020年2月28日18:04:24:f9ad14cb86a14c388ed6a146c80988fd:ReadKafkaJob(正在运行)
2020年2月28日18:07:23:e05bf26ee986573ffc01af8b1f5d1d59:ReadKafkaJob(正在运行)
两个作业具有相同的group.id,但每个作业都可以读取数据。
下面的日志显示相同的事件消耗两次
2020-
我的flink作业使用FlinkKafkaConsumer010读取卡夫卡消费者的信息,并使用CustomBucketingSink将其导入hdfs。我们有一系列转换kafka->flatmaps(2-3个转换)->keyBy->tumblingWindow(5分钟)->聚合->hdfsSink。我们的卡夫卡输入平均为300万/分钟事件,峰值时间约为2000万/分钟事件。检查点持续时间和两个检查点之间的最小暂停时间为3分钟,我使用的是FSStateBend
以下是我的假设:
Flink从kafk
我正在flink群集上部署作业。
S3路径类似于:
URL:s3a://bucket name/pre/pre1/original/2019_12_19/file.parquet.gz
我是这样读的:
val job = Job.getInstance
FileInputFormat.addInputPath(
job,
new org.apache.hadoop.fs.Path(url)
)
val
我有一个正在运行的作业,我只想使用一次恢复重试,因为在此期间不会触发此flink重新启动,我有一个线程尝试解决问题,然后当问题解决后,flink将重新启动,但有时线程需要更长的时间来修复问题并触发重新启动策略,由于问题仍然存在而失败,然后作业停止,但线程可能有另一个迭代,然后应用程序永远不会死,因为我将它作为jar应用程序运行。所以,我的问题是:
是否仍然可以从java代码中了解作业的状态?类似于(JobStatus.cancelled==true)
提前谢谢!
亲切的问候非常感谢菲利佩。这
我想使用flink sql客户端创建配置单元表
我可以成功地创建表t2,但是当我查询t2时,它会抱怨
Table options do not contain an option key 'connector' for discovering a connector.
我在conf/sql-client-defaults.yaml文件中将执行类型设置为批处理
我想问这里有什么问题。谢谢
Flink SQL> use testdb1;
Flink SQL> create tabl
在Flink作业中,我的状态类型为ValueState。当条件为真时,此状态设置为真,否则清除。我正在清除状态,而不是将其设置为false以减小状态的大小
我希望将未初始化状态与“设置为true”状态相同,但不将状态设置为“true”。有没有办法区分未初始化状态和清除状态
谢谢,,
Ahmed.清除状态被删除,不再存在。无法将其与未初始化状态区分开来
如果不付钱,你就得不到国家的好处
上一页 1 2 3 4 5 6 7 8 9 ...
下一页 最后一页 共 51 页