Apache Flink

Apache Flink 零基础入门(五)Flink开发实时处理应用程序

只谈情不闲聊 提交于 2020-03-10 14:12:37
使用Flink + java实现需求 环境 JDK:1.8 Maven:3.6.1(最低 Maven 3.0.4 ) 使用上一节中的springboot-flink-train项目 开发步骤 第一步:创建流处理上下文环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); 第二步:读取数据,使用socket流方式读取数据 DataStreamSource<String> text = env.socketTextStream("192.168.152.45", 9999); 第三步:transform text.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() { @Override public void flatMap(String value, Collector<Tuple2<String, Integer>> out) throws Exception { String[] tokens = value.toLowerCase().split(","); for(String token: tokens) { if(token.length() > 0) { out

Apache Flink 零基础入门(七)Flink中keyBy三种方式指定key

时光毁灭记忆、已成空白 提交于 2020-03-10 14:11:02
keyBy 如何指定key 不管是stream还是batch处理,都有一个keyBy(stream)和groupBy(batch)操作。那么该如何指定key? Some transformations (join, coGroup, keyBy, groupBy) require that a key be defined on a collection of elements. Other transformations (Reduce, GroupReduce, Aggregate, Windows) allow data being grouped on a key before they are applied. 一些算子(transformations)例如join,coGroup,keyBy,groupBy往往需要定义一个key。其他的算子例如Reduce, GroupReduce, Aggregate, Windows,也允许数据按照key进行分组。 DataSet DataSet<...> input = // [...] DataSet<...> reduced = input .groupBy(/*define key here*/) .reduceGroup(/*do something*/); DataStream DataStream<...> input

Flink_sql_client1.10源码在IDEA中集成hive并运行

我与影子孤独终老i 提交于 2020-03-04 11:53:20
最近一直在跟进flink_sql,为以后做更深入的了解做准备,这篇主要记录一下运行sql_client源码的过程~~ 对于本文涉及到的hadoop,hive等相关环境,可以看上篇 flink_sql_client 1.10 与 hive集成 读取实时数据 ​ 1、IDEA配制 1.1安装scala插件 IntelliJ IDEA -> Preferences -> Plugins 如果上图,可以在Marketplace里搜索scala安装,这样可能会因为网速问题,安装失败。 我们还可以从本地硬盘安装,我的idea是2019.2版本的,提前下载好对应的scala插件: scala-intellij-bin-2019.2.40.zip,如果下图: 安装完重启就好了 1.2 配制maven 修改IDEA的maven为本地安装的maven: IntelliJ IDEA -> Preferences 如上图,配制的目的,是为了让编译源码时用我们配制好的maven服务 2、Maven配制 有关maven的安装可以看 Hive源码系列(二)hive2.1.1源码编译并编译成eclipse项目 这篇中maven安装的部分 这块主要是修改maven的 settings.xml文件,将maven中央仓库换成阿里源,这样导入IDEA下载依赖包时,速度才能飞起来哦~~ < mirrors > <

如何离线分析Kafka海量业务消息?1分钟快速为您支招

て烟熏妆下的殇ゞ 提交于 2020-03-01 19:16:30
场景介绍 说起 Kafka ,许多使用者对它是又爱又恨。Kafka是一种分布式的、基于发布/订阅的消息系统,其极致体验让人欲罢不能,但操心的运维、复杂的安全策略、可靠性易用性的缺失等,仍需要使用者付出诸多的背后工作。即使你是Kafka老手,也难免会有上述同样的烦恼。 与其整日操心Kafka的部署,不如试试云上Kafka带给你的惊喜?目前国内主流的云服务厂商均提供了云上的Kafka服务,为应用系统提供异步的消息队列服务。通过高可用的消息缓冲队列,实现应用解耦、突发流量处理及与第三方的互通和集成,具有大规模、高可靠、高并发访问、可扩展且完全托管的特点。比如华为云分布式消息服务DMS,帮助云端的应用程序组件去耦合,具有很高的成本效益。DMS拥抱开源,提供支持兼容开源Kafka接口,用户可无缝迁移,按需使用。 分布式消息服务(Distributed Message Service,简称DMS)Kafka专享版 支持采集增量的交易消息数据并上传到华为云对象存储服务(Object Storage Service,简称OSS),通过实时流计算框架(例如Flink)或者华为云实时流计算服务(Cloud Stream Service, 简称CS)分析上传的交易数据,能够分析出最近交易指标等信息,以支持用户交易做决策。 申请环境与资源 1.开启转储 ▲在更多列中点击开启转储即可开启消息转储功能 2

如何在 Flink 1.9 中使用 Hive?

左心房为你撑大大i 提交于 2020-03-01 17:40:04
Apache Flink 从 1.9.0 版本开始增加了与 Hive 集成的功能,用户可以通过 Flink 来访问 Hive 的元数据,以及读写 Hive 中的表。本文将主要从项目的设计架构、最新进展、使用说明等方面来介绍这一功能。 Flink on Hive 介绍 SQL 是大数据领域中的重要应用场景,为了完善 Flink 的生态,发掘 Flink 在批处理方面的潜力,我们决定增强 FlinkSQL 的功能,从而让用户能够通过 Flink 完成更多的任务。 Hive 是大数据领域最早出现的 SQL 引擎,发展至今有着丰富的功能和广泛的用户基础。之后出现的 SQL 引擎,如 Spark SQL、Impala 等,都在一定程度上提供了与 Hive 集成的功能,从而方便用户使用现有的数据仓库、进行作业迁移等。因此我们认为提供与 Hive 交互的能力对于 FlinkSQL 也是非常重要的。 设计架构 与 Hive 集成主要包含了元数据和实际表数据的访问,因此我们会从这两方面介绍一下该项目的架构。 1.元数据 为了访问外部系统的元数据,Flink 提供了 ExternalCatalog 的概念。但是目前 ExternalCatalog 的定义非常不完整,基本处于不可用的状态。因此,我们提出了一套全新的 Catalog 接口来取代现有的 ExternalCatalog。新的 Catalog

如何正确使用Flink Connector?

妖精的绣舞 提交于 2020-03-01 13:43:49
本文主要分享 Flink connector 相关内容,分为以下三个部分的内容:第一部分会首先介绍一下 Flink Connector 有哪些。第二部分会重点介绍在生产环境中经常使用的 kafka connector 的基本的原理以及使用方法。第三部分答疑,对社区反馈的问题进行答疑。 Flink Streaming Connector Flink 是新一代流批统一的计算引擎,它需要从不同的第三方存储引擎中把数据读过来,进行处理,然后再写出到另外的存储引擎中。Connector 的作用就相当于一个连接器,连接 Flink 计算引擎跟外界存储系统。Flink 里有以下几种方式,当然也不限于这几种方式可以跟外界进行数据交换: 第一种 Flink 里面预定义了一些 source 和 sink。 第二种 Flink 内部也提供了一些 Boundled connectors。 第三种可以使用第三方 Apache Bahir 项目中提供的连接器。 第四种是通过异步 IO 方式。 下面分别简单介绍一下这四种数据读写的方式。 1.预定义的 source 和 sink Flink 里预定义了一部分 source 和 sink。在这里分了几类。 基于文件的 source 和 sink。 如果要从文本文件中读取数据,可以直接使用: env.readTextFile(path)

Flink Quickstart

廉价感情. 提交于 2020-03-01 13:12:15
Quickstart# Get a Flink example program up and running in a few simple steps. Setup: Download and Start Flink# Flink runs on Linux, Mac OS X, and Windows . To be able to run Flink, the only requirement is to have a working Java 8.x installation. Windows users, please take a look at the Flink on Windows guide which describes how to run Flink on Windows for local setups. You can check the correct installation of Java by issuing the following command: java -version If you have Java 8, the output will look something like this: java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0

聊聊flink的Async I/O

强颜欢笑 提交于 2020-03-01 12:41:25
序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the // interface of Java 8's futures (which is the same one followed by Flink's Future) /** * An implementation of the 'AsyncFunction' that sends requests and sets the callback. */ class AsyncDatabaseRequest extends RichAsyncFunction<String, Tuple2<String, String>> { /** The database specific client that can issue concurrent requests with callbacks */ private transient DatabaseClient client; @Override public void open(Configuration parameters) throws Exception { client = new

实时计算Flink on Kubernetes产品模式介绍

跟風遠走 提交于 2020-03-01 05:09:41
Flink产品介绍 目前实时计算的产品已经有两种模式,即共享模式和独享模式。这两种模式都是全托管方式,这种托管方式下用户不需要关心整个集群的运维。其次,共享模式和独享模式使用的都是Blink引擎。这两种模式为用户提供的主要功能也类似, 都提供开发控制台; 开发使用的都是Blink SQL,其中独享模式由于进入了用户的VPC,部署在用户的ECS上,因此可以使用很多底层的API,如UDX; 都提供一套的开箱即用的metric收集、展示功能; 都提供作业监控和报警功能。 最后,在收费模式上,共享模式和独享模式用户所承担的都是硬件加软件(独享模式是软件(VPC))的费用。 Flink on Kubernetes模式介绍及对比 在共享和独享这两种模式的基础上,阿里云实时计算团队于2019年9月中旬会推出一个新的模式,Flink on K8S,其与前两种模式区别主要在于: 托管模式:集群以半托管模式部署在用户ECS和K8S上,用户对该集群用完全的掌控能力。 引擎版本:直接使用开源Flink版本 提供功能:提供开发控制台支持用户提交并控制作业;支持Flink 1.6/1.7/1.8等版本;也提供metric收集、展示、作业监控、报警功能;提供其他可插拔的增值功能。 收费模式:Flink on K8S模式下软件(VPC)是完全免费的,用户只需要支付ECS的费用就可以免费试用Flink产品。

聊聊flink的BlobWriter

时间秒杀一切 提交于 2020-02-28 17:18:42
序 本文主要研究一下flink的BlobWriter BlobWriter flink-release-1.7.2/flink-runtime/src/main/java/org/apache/flink/runtime/blob/BlobWriter.java /** * BlobWriter is used to upload data to the BLOB store. */ public interface BlobWriter { Logger LOG = LoggerFactory.getLogger(BlobWriter.class); /** * Uploads the data of the given byte array for the given job to the BLOB server and makes it * a permanent BLOB. * * @param jobId * the ID of the job the BLOB belongs to * @param value * the buffer to upload * * @return the computed BLOB key identifying the BLOB on the server * * @throws IOException * thrown if an