请选择 进入手机版 | 继续访问电脑版

Flink 快速入门案例(参考官方文档)

[复制链接]
甜蜜的负担 发表于 2020-12-31 20:26:13 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Flink

批处理惩罚是有界数据流处理惩罚的范例。在这种模式下,你可以选择在计算效果输出之前输入整个数据集,这也就意味着你可以对整个数据集的数据举行排序、统计或汇总计算后再输出效果。
流处理惩罚正相反,其涉及无界数据流。至少理论上来说,它的数据输入永远不会竣事,因此程序必须持续不绝地对到达的数据举行处理惩罚。
快速入门案例

  1. DarchetypeGroupId=org.apache.flink DarchetypeArtifactId=flink-walkthrough-datastream-java DarchetypeVersion=1.12.0
复制代码



  • FraudDetectionJob
    1. package com.sanxiau;import org.apache.flink.streaming.api.datastream.DataStream;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;import org.apache.flink.walkthrough.common.sink.AlertSink;import org.apache.flink.walkthrough.common.entity.Alert;import org.apache.flink.walkthrough.common.entity.Transaction;import org.apache.flink.walkthrough.common.source.TransactionSource;/** * 界说了程序的数据流 * * Skeleton code for the datastream walkthrough */public class FraudDetectionJob {        public static void main(String[] args) throws Exception {                // 设置执行情况。 任务执行情况用于界说任务的属性、创建数据源以及最终启动任务的执行。                StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();                // 创建数据源 官方案例中存在数据                DataStream transactions = env                        .addSource(new TransactionSource())                        .name("transactions");                // 对事件分区 & 敲诈检测                DataStream alerts = transactions                        .keyBy(Transaction::getAccountId)  //keyBy对流举行分区,包管同一个task处理惩罚同一个的key的所有数据                        .process(new FraudDetector())  //对流绑定了一个操纵,这个操纵将会对流上的每一个消息调用所界说好的函数。                        .name("fraud-detector");                // 输出效果                alerts  //sink 会将 DataStream 写出到外部系统                        .addSink(new AlertSink()) // AlertSink 使用 INFO 的日志级别打印每一个 Alert 的数据记录,而不是将其写入长期存储,以便你可以方便地检察效果。                        .name("send-alerts");                // 运行作业 Flink 程序是懒加载的,而且只有在完全搭建好之后,才可以或许发布到集群上执行。                // 调用execute 时给任务通报一个任务名参数,就可以开始运行任务。                env.execute("Fraud Detection");        }}
    复制代码
  • FraudDetector
    1. package com.sanxiau;import org.apache.flink.streaming.api.functions.KeyedProcessFunction;import org.apache.flink.util.Collector;import org.apache.flink.walkthrough.common.entity.Alert;import org.apache.flink.walkthrough.common.entity.Transaction;/** * * 界说了敲诈生意业务检测的业务逻辑。 * 敲诈检测器 * Skeleton code for implementing a fraud detector. * *  是KeyedProcessFunction 接口的一个实现 *        会在每个生意业务事件上被调用 *         这个程序里边会对每笔生意业务发出警报         */public class FraudDetector extends KeyedProcessFunction {        private static final long serialVersionUID = 1L;        private static final double SMALL_AMOUNT = 1.00;        private static final double LARGE_AMOUNT = 500.00;        private static final long ONE_MINUTE = 60 * 1000;        @Override        public void processElement(                        Transaction transaction,                        Context context,                        Collector collector) throws Exception {                Alert alert = new Alert();                alert.setId(transaction.getAccountId());                collector.collect(alert);        }}
    复制代码
  • 报错
    1. java.lang.NoClassDefFoundError: org/apache/flink/streaming/api/functions/source/SourceFunction
    复制代码
  • 修改pom.xml 中依赖的作用域,删除大概
    1. provided
    复制代码
  • 执行效果


来源:https://blog.csdn.net/qq_29342297/article/details/111995932
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )