自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(315)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 flink-9 广播变量

flink广播变量概念用法示例概念广播变量允许编程人员在每台机器上保持一个只读的缓存变量,而不是传送变量的副本给tasks广播变量创建后,它可以运行在集群中的任何function上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样才能确保每个节点获取到的值都是一致的一句话解释,可以理解为是一个公共的共享变量,我们可以把一个dataset 数据集广播出去,然后不同的task在节点上都能够获取到,这个数据在每个节点上只会存在一份。如果不使用broadcast,则在每个节点中的每个t

2020-09-21 00:44:47 159

原创 flink-8 重分区算子

重分区算子重分区算子种类Random PartitioningRebalancingRescaling示例:对filter后的数据进行重分区定义分区广播变量重分区算子种类重分区算子用来对数据进行重新分区,可以用来解决数据倾斜问题Random Partitioning根据均匀分布随机分配元素,(类似于random.nextInt(3),0 - 3 在概率上是均匀的)dataStream.shuffle()Rebalancing分区元素循环,每个分区创建相等的负载。数据发生倾斜的时候可以

2020-09-20 19:29:10 1617

原创 flink-7 DataFrame转换算子

DataFrame转换算子前言map、filterflatMapflatMap、keyBy、Sumreduce流的合并和拆分流的合并unionconnect流的拆分split、select官网地址前言通过从一个或多个 DataStream 生成新的 DataStream 的过程被称为 Transformation 操作。在转换过程中,每种操作类型被定义为不同的 OperatorFlink 程序能够将多个 Transformation 组成一个 DataFlow 的拓扑map、filterim

2020-09-20 16:11:58 717

原创 flink-6 flinksink目标和写数据到Redis中

flink写数据到RedisFlink的Sink数据目标Flink写数据到Redis中pom依赖Flink的Sink数据目标writeAsText():将元素以字符串形式逐行写入,这些字符串通过调用每个元素的toString()方法来获取print() / printToErr():打印每个元素的toString()方法的值到标准输出或者标准错误输出流中自定义输出addSink【kafka、redis】我们可以通过sink算子,将我们的数据发送到指定的地方去,例如kafka或者redis或者hb

2020-09-19 18:08:27 686

原创 flink-5 flink的DataSource数据源

flink的DataSource数据源基于文件基于socket基于集合自定义输入基于文件object txt { def main(args: Array[String]): Unit = { //构建流处理的环境 val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment //从socket获取数据 val sourceStream: DataSt

2020-09-18 12:43:30 330

原创 flink 单词计数demo

单词计数demo单词计数实时统计-scala实时统计-java离线统计pom依赖单词计数实时统计每隔1秒统计最近2秒单词出现的次数实时统计-scala代码/导入scala版本的import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment}import org.apache.flink.streaming.api.windowing.time.Timeobject onLine {

2020-09-17 22:05:16 622

原创 flink-4 并行度

flink并行度flink并行度并行度的设置并行度代码示例flink并行度一个Flink程序由多个任务组成(source、transformation和 sink)。 一个任务由多个并行的实例(线程)来执行, 一个任务的并行实例 (线程) 数目就被称为该任务的并行度。不同任务的并行度可以不同不同算子的并行度可以不同默认情况下:相邻的并行度相同的transformation算子的task会自动组成一个任务链所以,在不涉及宽依赖的时候,相邻的算子最好并行度相同。涉及到数据的本地性,并行度不同,会

2020-09-17 20:17:37 344

原创 flink-3 flink on yarn

flink on yarn前言第一种模式yarn session模式任务的提交第二张模式yarn-cluster模式下任务的提交指令参数flink on yarn运行原理flink on yarn部署前言flink可以提交都不同集群,提交到yarn上只是其中一种比较常见的选择。flink on yarn有两种模式yarn sessionyarn cluster其区别主要资源的申请和释放第一种模式内存集中管理模式(yarn session)在Yarn中初始化一个Flink集群,开辟指

2020-09-17 18:55:31 825

原创 flink-2 task之间传输数据方式、操作链和任务槽

操作链和任务槽操作链任务链的关闭任务槽操作链操作链即任务链(不同场景下称呼不同)是将相关性很强的transformation操作绑定在一起,这样能够让转换过程中上下游的 Task 在同一个 Pipeline 中执行,进而避免因为数据在网络或者线程间传输导致的开销,提高整体的吞吐量和延迟。如下图所示:将身处同一个TaskManager的key agg和sink绑定到一起。从而使原来的4个task变为2个task任务链类似于spark中的管道,spark将同一分区、同一债依赖的task分配给一个tas

2020-09-17 17:48:41 1816

原创 flink-1 flink简介

flink简介有界数据和无界数据flink应用场景flink优势flink基本技术栈flink基本架构有界数据和无界数据有界数据通常被称为批处理既定义了数据流的开始,也定义了数据流的结束。处理有界数据时,既可以等所有数据都接收完再处理,也可以处理此刻前的所有数据。有界流数据可以被排序,所以处理的时候不需要有序的提取无界数据有数据流的开始,但是没有数据流的结束。处理无界数据时,不能等到所有数据都接收完再处理,数据会无休止的产生,需要立即处理无界数据处理时一般需要根据特定的顺序提取数据

2020-09-17 17:24:01 230

原创 sparkSQL sparkSQL自定义函数

sparkSQL自定义函数sparkSQL自定义函数代码sparkSQL自定义函数关键函数sparkSession.udf.register有两种风格:面向对象式风格,通过实现匿名内部类来实现自定义功能面向函数式风格(一般选这种,比较简洁,见代码)register:第一个参数为函数名,第二个参数为一个函数,最后一个参数是register的返回值类型第二个参数函数的前N个参数为该函数的返回值,最后一个参数为该函数的返回值代码import org.apache.spark.Sp

2020-09-16 00:18:28 389

原创 sparkSQL sparkSQL保存到不同数据源中

sparkSQL保存到不同数据源中代码代码package saveDifferentimport org.apache.spark.SparkConfimport org.apache.spark.sql.{DataFrame, SparkSession}object save { def main(args: Array[String]): Unit = { //1、创建SparkConf对象 val sparkConf: SparkConf = new SparkCon

2020-09-15 23:32:48 150

原创 sparkSQL sparkSQL读写数据到MySQL

sparkSQL读写数据到MySQL前言sparkSQL加载MySQL表中的数据sparkSQL写数据到MySQLsparkSQL写数据部署到集群pom依赖前言spark sql可以通过 JDBC 从关系型数据库中读取数据的方式创建DataFrame,通过对DataFrame一系列的计算后,还可以将数据再写回关系型数据库中流程图sparkSQL加载MySQL表中的数据import java.util.Propertiesimport org.apache.spark.SparkConfimp

2020-09-15 23:28:58 3319

原创 sparkSQL sparkSQL整合hive(spark on hive)

sparkSQL整合hivesparkSQL整合hivesparkSQL整合hive步骤示例数据库保存在本地和数据库保存在HDFS应用场景sparkSQL整合hivesparkSQL整合hive,即spark on hive。本质是把hive当做数据源,使用spark作为计算引擎来处理数据。sparkSQL整合hive步骤把hive安装目录下conf文件夹里的hive-site.xml拷贝到集群每一个spark安装目录下对应的conf文件夹中目的:让spark知道存放hive表的元数据的M

2020-09-15 14:29:43 944

原创 sparkSQL sparkSQL操作hiveSQL

sparkSQL操作hiveSQLsparkSQL操作hiveSQLsparkSQL操作hiveSQL来操作本地文件sparkSQL操作hiveSQL来操作HDFS上的hivepom依赖sparkSQL操作hiveSQLsparkSQL操作hiveSQL并不是sparkSQL on hive。sparkSQL操作hiveSQL底层运行的依然是MR程序sparkSQL on hive是把hive当做数据源,spark作为计算引擎。核心:开启hive依赖enableHiveSupport()

2020-09-15 00:58:39 1307

原创 sparkSQL RDD转换成DataFrame并读取数据

RDD转换成DataFrame并读取数据利用反射机制通过StructType动态指定Schemapom依赖利用反射机制应用场景:在开发代码之前,可以事先确定好DataFrame的schema信息,通过反射机制后期直接映射成DataFrame的schema信息要点需要事先定义一个样例类,参数与schema信息一致需要手动导入隐式转换,注意导入对象要与前面定义的sparkSession对象名称一致代码示例import org.apache.spark.SparkContextimport o

2020-09-14 18:44:46 1728 1

原创 sparkSQL sparkSQL之DataFrame和DataSet

sparkSQL之DataFrameDataFrame概述DataFrame发展DataFrame是什么DataFrame和RDD的优缺点读取文件构建DataFrameDataFrame常用操作DataFrame概述DataFrame发展DataFrame前身是schemaRDD,schemaRDD直接继承RDD,是RDD的一个实现类在spark1.3.0之后把schemaRDD改名为DataFrame,它不在继承自RDD,而是自己实现RDD上的一些功能(如 map filter flatmap等

2020-09-14 18:32:29 831

原创 sparkSQL sparkSQL概述和特性

sparkSQL概述和特性sparkSQL的前世今生什么是sparkSQLsparkSQL的四大特性易整合统一的数据源访问兼容hive支持标准的数据库连接sparkSQL的前世今生hive ->翻译成sql->解析成MRshark->翻译成sql>解析成spark任务在spark出现之前,Shark是专门针对于spark的构建大规模数据仓库系统的一个框架Shark与Hive兼容、同时也依赖于Spark版本Hivesql底层把sql解析成了mapreduce程序,Sh

2020-09-10 18:04:02 309

原创 sparkstreaming sparkstreaming调优

sparkstreaming调优基于receiver接收器的调优调整BolckReceiver数量调整block数量调整receiver接受速率调整数据处理的并行度数据的序列化内存调优Output Operations性能开启压力反馈Elastic Scaling(资源动态分配)数据倾斜调优基于receiver接收器的调优现在很少使用receiver方式了,相关调优方式了解即可调整BolckReceiver数量BolckReceiver数量默认是1代码示例val kafkaStream = {

2020-09-10 00:43:02 427

原创 sparkstreaming sparkstreaming实现exactly-once

sparkstreaming实现exactly-once实现前提解决思路实现pom文件代码实现实现前提Source支持Replay流计算引擎本身处理能保证Exactly-Once。Sink支持幂等或事务更新解决思路接收数据:从Source中接收数据。转换数据:用DStream和RDD算子转换。储存数据:将结果保存至外部系统。关键问题把数据结果保存和提交偏移量放到一个事务里,要不都成功,要不都失败。实现pom文件 <dependency>

2020-09-09 20:50:37 276

原创 sparkstreaming ScalikeJDBC

ScalikeJDBC什么是ScalikeJDBCIDEA项目中导入相关库数据库操作数据库连接配置信息加载数据配置信息查询数据库并封装数据插入数据AutoCommit插入返回主键标识事务插入更新数据什么是ScalikeJDBCScalikeJDBC是Scala开发人员基于SQL的简洁数据库访问库。该库自然包装JDBC API,为您提供易于使用且非常灵活的API。更重要的是,QueryDSL使您的代码类型安全且可重用。ScalikeJDBC是一个实用且适合生产的产品。 将此库用于实际项目.ID

2020-09-09 20:34:01 192

原创 sparkstreaming sparkstreaming与kafka整合(两种receiver方式)

sparkstreaming两种receiver方式sparkstreaming语义sparkstreaming整合kafka的两种方式Receiver-based ApproachDirect Approach (No Receivers)Direct Approach下sparkstreaming整合kafka0.8Direct Approach下sparkstreaming整合kafka1.0sparkstreaming语义sparkstreaming有三种语义At most once 一

2020-09-09 19:55:11 652

原创 sparkstreaming sparkstreaming动态感知kafka分区

sparkstreaming动态感知kafka分区0.8版本kafka1.0版本kafka0.8版本kafka0.8版本kafka需要粘贴DirectKafkaInputDStream类并重写,比较麻烦。实现和部署可以参考一下链接代码实现部署1.0版本kafkasparkstreaming整合1.0版本的kafka天然支持动态感知kafka分区不用特殊处理如下采取直连模式整合kafkaval kafkaDStream: InputDStream[ConsumerRecord[Stri

2020-09-09 19:54:15 500

原创 sparkstreaming sparkstreaming容错机制

sparkstreaming容错机制sparkstreaming运行流程Executor失败Driver失败driver的自动重启设置数据丢失executor备份WAL预写日志实现步骤某个task特别慢sparkstreaming运行流程提交一个sparkstreaming程序到服务器运行,默认提交的服务器为client,并向ClusterManager报备申请资源。在一个executor中单独启动一个receiver线程(默认一个,可以更改成多个)用来接收数据。receiver根据指定时间间隔(

2020-09-08 17:30:25 324

原创 sparkstreaming sparkstreaming整合sparksql

sparkstreaming整合sparksql示意图代码示意图sparkstreaming实时处理DStream,SparkSQL批处理DataFramesparkstreaming处理的DStream内部封装有RDD,通过.toRDD将DStream转换成RDDSpqrkSQL处理的DataFrame内部同样封装有RDD,DataFrame通过注册成表,被SparkSQL处理所以本质上SpqrkSQL处理的还是DStream代码import org.apache.spark.Spar

2020-09-07 23:18:22 422

原创 sparkstreaming checkpoint

sparkstreaming checkpointcheckpointcheckpointcheckpoint用来保存以下两部分信息:之前运算结果中的数据driver端的元数据信息,即程序的执行逻辑。也就是说可以通过checkpoint来实现driver端程序的高可用注意如果程序中断之后,对代码进行了修改变更,此时checkpoint目录也就没有意义。还会按照之前的代码逻辑走import org.apache.spark.SparkConfimport org.apache.spa

2020-09-07 20:16:28 334

原创 sparkstreaming foreach foreachRDD foreachPartition

sparkstreaming 常见遍历函数的区别区别foreachforeachRDDforeachPartition官网示例代码示例官网链接区别foreach源码 /** Applies a function `f` to all values produced by this iterator. * * @param f the function that is applied for its side-effect to every element. *

2020-09-07 17:53:42 557

原创 sparkstreaming sparkstreaming窗口函数

sparkstreaming窗口函数windows函数概念sparkstreaming内置窗口函数代码示例官网链接windows函数概念与聚合函数每次只返回一个值不同,窗口函数可以每次返回当前数据流的多个值,并在数据流上进行滑动。如上图所示上图每次处理3个batch的数据,每个2秒进行一次滑动。因此会有数据的重复处理,如果不想重复处理可以将windows length和sliding internval设置成相等的值每次窗口滑动时,DStream中落入窗口的RDD就会被合并计算成新的windo

2020-09-07 10:27:38 511

原创 sparkstreaming transform筛选每批次前N位

transformsparkStreaming接受socket数据实现所有批次的单词次数累加sparkStreaming接受socket数据实现所有批次的单词次数累加import org.apache.log4j.{Level, Logger}import org.apache.spark.SparkConfimport org.apache.spark.rdd.RDDimport org.apache.spark.streaming.dstream.{DStream, ReceiverInput

2020-09-06 22:36:41 259

原创 SparkStreaming updateStateByKey和mapWithState

SparkStreaming常见算子示例两者的异同updateStateByKeymapWithState两者的异同相同:在spark1.6之后最终都由updateStateByKey执行差异:updateStateByKey:UpdateStateBykey会统计全局的key的状态,不管有没有数据输入,它会在每一个批次间隔返回之前的key的状态。updateStateBykey会对已存在的key进行state的状态更新,同时还会对每个新出现的key执行相同的更新函数操作。如果通过更新函

2020-09-06 19:47:22 277

原创 sparkstreaming sparkstreaming整合其常见数据源

sparkstreaming整合非API数据源示意图数据抽象socket数据源HDFS数据源flume数据源pom文件官网地址自定义数据源kafka数据源示意图以下几个数据源处理都以单词计数为例,如下图:数据抽象不论何种数据源,最终都会被抽象成ReceiverInputDStream。/** * Abstract class for defining any [[org.apache.spark.streaming.dstream.InputDStream]] * that has to s

2020-09-05 17:06:21 739

原创 sparkstreaming-2 sparkstreaming之DStream

sparkstreaming之DStreamDStream概念DStream中batch的划分及batch和RDD的关系SparkStreaming处理流程Dstream算子Input DStreamTransformations DStreamOutput DStreamDStream概念DStream(Discretized Stream)作为Spark Streaming的基础抽象,它代表持续性的数据流。数据流来源这些数据流既可以通过外部输入源赖获取,也可以通过现有的Dstream的tra

2020-09-05 01:07:36 417

原创 sparkstreaming-1 sparkstreaming基础架构

sparkstreaming基础架构sparkstreaming简介sparkstreaming架构流程sparkstreaming程序入口sparkstreaming简介SparkStreaming是对于Spark核心API的拓展,从而支持对于实时数据流的可拓展,高吞吐量和容错性流处理。数据可以由多个源取得,例如:Kafka,Flume,Twitter,ZeroMQ,Kinesis或者TCP接口,同时可以使用由如map,reduce,join和window这样的高层接口描述的复杂算法进行处理。最终,处

2020-09-03 14:33:06 143

原创 flume flume自定义sink过滤数据库字段

flume自定义sink过滤数据库字段理论准备数据准备代码java代码flume配置文件官网地址理论准备自定义sink需要继承AbstractSink类,并实现以下3个方法start()process()stop()transaction:数据准备# 创建一个数据库CREATE DATABASE IF NOT EXISTS mysqlsource DEFAULT CHARACTER SET utf8 ;USE mysqlsource;#v 创建一个表,用户保存拉取目标表位置的信息

2020-09-02 13:48:08 402

原创 flume flume自定义source从数据库采集数据

flume自定义source链接数据库理论准备自定义sourcePollableSource实现流程自定义flume开发流程示例需求数据准备pom文件IDEA工程MYSQL配置代码实现封装数据库操作自定义sourceflume配置文件官网地址理论准备自定义source自定义source可以实现一些原生source没有的功能,如:从网上下载,链接数据库等自定义的消息有两种类型SourcePollableSource (轮训拉取)EventDrivenSource (事件驱动)两者的区别在于:

2020-09-01 17:35:12 1684 1

原创 flume flume自定义拦截器

flume自定义拦截器flume自带拦截器flume自定义拦截器flume Interceptor源码示例原始数据格式处理后的数据第一个flume代码(自定义flume拦截器)pom文件java代码flume配置文件flume自带拦截器timestamp 拦截器:在Event Header中添加时间戳。Host 拦截器:在Event Header中添加agent运行机器的Host或IP。Static 拦截器:在Event Header中添加自定义静态属性。Remove Header拦截器:可移除

2020-09-01 11:18:57 1225

原创 谓词下推

@[TOC](谓词下推)谓词下推概述读后感:谓词下推用一句话概述就是:在更贴近数据源的地方过滤清洗数据原文地址

2020-08-31 17:38:02 178

原创 flume json监控

@[TOC](flume json监控)flume支持的监控类型flume支持多种监控JMX ReportingJSON ReportingGangliaCustom Reporting官网地址flume json监控添加如下两个参数flume.monitoring.type=http :指定Reporting的方式为httpflume.monitoring.port :指定了http服务的端口号。-Dflume.monitoring.type=http -Dflume.mo

2020-08-31 17:35:00 390

原创 flume flume静态拦截器

flume静态拦截器flume静态拦截器示例服务器A和服务器B代码服务器C代码flume静态拦截器静态拦截器,用于在events header中加入一组静态的key和value.filePrefix只能在在event的header加固定的前缀,无法实现根据不同key在指定的目录下生成不同文件的效果。示例需求A、B两台日志服务机器实时生产日志主要类型为access.log、nginx.log、web.log现在需要把A、B 机器中的access.log、nginx.log、web.log 采集汇

2020-08-31 17:23:31 286

原创 flume flume负载均衡(load balance)

flume负载均衡load balance简介简化版load balance服务器规划node01代码node02代码node03代码简介负载均衡Sink 选择器提供了在多个sink上进行负载均衡流量的功能。 它维护一个活动sink列表的索引来实现负载的分配。默认支持了轮询(round_robin)和随机(random)两种选择机制分配负载。同样支持从AbstractSinkSelector继承写一个自定义的选择器。工作时,此选择器使用其配置的选择机制选择下一个sink并调用它。 如果

2020-08-30 15:21:33 1026

IDEA快捷键大全.zip

用户仅可上传其享有知识产权或已取得相关权利人合法授权的资源或内容,用户不得在未经授权的情况下,上传任何可能涉及侵权的资源或内容,用户必须保证上传资源或内容不侵犯任何第三方的合法权益。用户不得未经著作权人同意擅自对他人的作品进行全部或部分复制、修改、改编、翻译、汇编、反向工程、反向编译、反向汇编或改写并进行上传。用户可以为介绍、评论、研究等目的,在合理范围内依法引用他人已经发表的作品,但应当注明作者姓名、作品名称,且不得侵犯著作权人及其他权利人的合法权益

2020-07-14

工程文件设置输出

配置VS,按照库文件、头文件等给项目分类。

2016-11-02

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除