- 博客(136)
- 资源 (23)
- 收藏
- 关注
原创 【Flink】Flink 处理函数之基本处理函数(一)
流处理API,无论是基本的转换聚合、还是复杂的窗口操作,都是基于DataStream进行转换的,所以统称为,这是Flink编程的核心。但其实Flink为了更强大的表现力和易用性,Flink本身提供了多层API,只是中间一环,如下图所示:在更底层,Flink可以不定义任何具体的算子(比如mapfilter,或者window),而只是提炼出一个统一的操作——它是所有转换算子的一个概括性的表达,可以自定义处理逻辑,所以这一层接口就被叫作。状态(state)以及时间(time)。
2024-03-25 21:45:54 1627
原创 【Flink】Flink 中的时间和窗口之窗口其他API的使用
对于一个窗口算子而言,窗口分配器和窗口函数是必不可少的。除此之外,Flink 还提供了其他一些可选的 API,可以更加灵活地控制窗口行为。
2024-03-19 22:12:35 1328
原创 【Flink】Flink 中的时间和窗口之窗口API使用
窗口的API使用分为和,在定义窗口操作之前,首先就要确定好是基于按键分区Keyed的数据流来开窗还是基于没有按键分区的DataStream上开窗。
2024-03-18 23:42:05 1319
原创 【Flink】Flink 中的时间和窗口之窗口(Window)
Flink是一种流式计算引擎,主要是来处理无界数据流,数据流的数据是一直都有的,等待流结束输入数据获取所有的流数据在做聚合计算是不可能的。为了更方便高效的处理无界流,一种方式就是把无限的流数据切割成有限的数据块进行处理,这就是Flink中提到的。在Flink中,窗口就是用来处理无界流的核心。我们很容易把窗口想象成一个固定位置的框,数据源源不断的流过来,到某个时间点窗口该关闭了,就停止收集数据,触发计算并输出结果。
2024-02-26 21:46:25 1493
原创 【Flink】DataStream API使用之转换算子(Transformation)
大多数操作都需要用户自定义 function,至于什么是自定义函数?我们可以通过自定义函数类或者匿名类来实现接口,也可以直接传入 Lambda 表达式。这就是谓的用户自定义函数(user-defined function,UDF)当Flink提供的分区策略不能满足我们的要求时,还可以通过使用partitionCustom()方法来自定义分区策略:自定义分区器(Partitioner)对象:对DataStream进行分区的。应用分区器的字段,指定方式与KeyBy指定key基本一样,可以通过字段名。
2023-06-26 23:52:52 1565 1
原创 【Flink】Flink 中的时间和窗口之水位线(Watermark)
在事件时间语义下,我们可以不依赖系统时间,而是基于数据自带的时间戳去定义了一个时钟,用来表示当前时间的进展。这样每个并行子任务都会有一个自己的逻辑时钟,它的前进是靠数据的时间戳来驱动的。但是在分布式系统中,会存在一些问题,因为数据本身在处理转换过程中会发生变化,如果遇到窗口聚合的操作,呢么下游的数据就会变少,时间进度的控制就不精细了。另外,数据向下游任务传递时,一般只能传输给一个子任务(除广播外),这样其他的并行子任务的时钟就无法推进了。所以时钟也需要以数据的形式传递出去,告诉下游任务当前时间的进展;
2023-06-26 23:50:03 2281
原创 【Flink】DataStream API使用之输出算子(Sink)
如果Flink提供的Sink不满足自己的要求,也可以通过自定义Sink来满足自己的要求,通过Flink提供的接口和对应的抽象类重写invoke()就可以自定义Sink。这里以Hbase为例,使用,创建Hbase的连接以及关闭Hbase的连接分别放到open和close方法中。
2023-06-06 22:11:07 1048
原创 【Flink】DataStream API使用之Flink支持的数据类型
Flink的使用过程中,我们的数据都是定义好的 UserBehavior 类型,那还有没有其他更灵活的类型可以用呢?Flink 支持的数据类型到底有哪些?
2023-05-13 16:50:20 791 1
原创 【Flink】DataStream API使用之源算子(Source)
一般将数据的输入来源称为数据源(data source),而读取数据的算子就叫做源算子(source operator)。所以,Source就是整个程序的输入端。Flink中添加source的方式,是调用执行环境的 addSource()方法:
2023-05-10 20:45:26 1956
原创 【Flink】DataStream API使用之执行环境
Flink 程序可以在各种上下文环境中运行:我们可以在本地 JVM 中执行程序,也可以提交到远程集群上运行。不同的环境,代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时,首先必须获取当前 Flink 的运行环境,从而建立起与 Flink 框架之间的联系。只有获取了环境上下文信息,才能将具体的任务调度到不同的 TaskManager 执行。
2023-05-08 16:54:06 646
原创 【Java】@ConfigurationProperties+@PropertySource读取配置文件数据
前提最近在写代码的过程中,看到一个读取配置文件的方式,感觉挺有用的,记录一下。配置文件装填Map类型1. 配置文件mysql-datatype.properties内容datasource.type[CHAR]=STRINGdatasource.type[CHARACTER]=STRINGdatasource.type[VARCHAR]=STRINGdatasource.type[TEXT]=STRING配置文件放在项目的resource目录下的config目录2. DemoDataT
2022-04-11 16:37:20 1412
原创 【数据库】PostgreSQL增加密码复杂度校验
前言最近修改问题单,被分配了一个增加密码复杂度校验的单子,PG库也不是很懂,查了资料,PG有自带的密码复杂度校验插件,只需要使用这个插件就可以了,然后根据这几天的折腾,总结一下。怎么添加密码复杂度校验插件PostgreSQL可以使用passwordcheck扩展+CrackLib来检查口令,并且 PostgreSQL自带了一个插件passwordcheck可以满足简单的密码复杂度测验, 防止使用过短, 或者与包含用户名的密码。PG的密码复杂度校验插件所在目录是contrib/passwordchec
2021-05-28 17:37:14 5180 3
原创 【数据库】PostgreSQL编译安装详细过程
前言最近被安排做一些安全加固的事情,被分到了几个关于postgresql数据库的问题。关于pg库,我们应该都很熟悉了,项目中经常用到,原先以为下个包就可以直接部署了(当然官网也提供了桌面化安装程序),但是我没有安装linux的桌面化组件,所以只能自己编译安装了。。。。。准备材料以为服务器是内网服务器,不能配置yum,也连接不了外网,只能自己离线安装了,安装前需要准备的软件或者rpm包:postgresql-10.14.tar.gzreadline-devel-6.2-11.el7.x86_64.
2021-05-15 14:32:32 4906
原创 Mockito记录和静态方法的模拟
单元测试那些坑1. 前言为了提高白盒测试覆盖率,项目中需要添加单元测试代码,写单元测试中很多都是用的Mock+Junit,但是我这个项目中使用的是Mock+testng,不过这两种方式我都会介绍。2. Mock+TestNG单元测试2.1 前提准备这里提供一份依赖jar包的pom文件:<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</art
2021-03-29 16:19:33 2095 2
原创 【K8s】常用K8s命令记录
kubectl get node -o wide 获取所有节点ipkubectl get pods --all-namespaces 获取所有podskubectl delete pod -n cdm cdmcontroller-5f8f6558b8-gbq9x 删除podskubectl delete pod PODNAME --force --grace-period=0 强制删除kubectl -nei-dayu get svc 获取配置kubectl get po httpd-gv4bl
2021-03-26 14:27:22 177
转载 【JAVA】Log4j2日志详解
一、log4j2配置详解项目里使用了log4j2作为日志打印,但是log4j2和log4j相比配置文件有很大的差异,所以这里记录一下配置文件的说明二、配置解析1. 配置文件的名称以及在项目中的位置在查阅资料的时候看到有的博客写的是log4j2的配置文件名是log4j2-spring.xml,但是我测试了一下其实不写这个也可以的。log4j 2.x版本不支持已.properties为后缀的文件配置方式,2.x版本的配置文件后缀名只能为:.xml,.json,.jsn这三种。系统选择配置文件的优先级
2020-05-28 17:14:37 2518
原创 【HBase笔记】HBase Shell操作(三)
1. 基本操作1.1 进入Hbase客户端命令行执行命令root@master:/opt/module/cdh/hbase-1.3.1/bin# ./hbase shell进入客户端。1.2 查看帮助命令执行help得到结果:hbase(main):001:0> helpHBase Shell, version 1.3.1, r930b9a55528fe45d8edce7af...
2019-12-24 23:26:05 654
原创 【HBase笔记】HBase安装(二)
简介HBase的安装和Hadoop的安装是差不多的,这种体系的安装基本上都是相似的。前期准备:Hadoop的运行Zookeeper的运行我是在虚拟机上安装的伪分布式模式。安装步骤解压HBase的安装包我是跟视频下载的HBase1.3.1版本的。这里是从网上找到版本支持,只要版本支持就可以的。修改配置文件主要修改的是三个文件:hbase-env.sh ,hbase...
2019-12-16 00:06:42 404
原创 【Kafka笔记】3.Kafka架构详解
1.Kafka工作流程Kafka中的消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是...
2019-12-14 16:48:14 596
原创 【SparkSQL笔记】SarkSQL高并发读取数据库和存储数据到数据库(三)
1. SparkSql 高并发读取数据库SparkSql连接数据库读取数据给了三个API://Construct a DataFrame representing the database table accessible via JDBC URL url named table and connection properties.Dataset<Row> jdbc(Strin...
2019-12-08 16:40:42 1117
原创 【SparkSQL笔记】SparkSQL的Dataset操作大全(二)
SparkSQL的Dataset/DataFrame操作大全简介说明1. Spark程序中利用SparkSession对象提供的读取相关数据源的方法读取来自不同数据源的结构化数据,转化为Dataset(DataFrame),当然也可以将现成RDDs转化为Dataset(DataFrame),在转化为Dataset(DataFrame)的过程中,需自识别或指定Dataset(DataFrame...
2019-12-08 16:36:11 3513
原创 【SparkSQL笔记】SparkSQL的入门实践教程(一)
1.Spark SQL概述Spark SQL是用于处理结构化数据的模块。与Spark RDD不同的是,Spark SQL提供数据的结构信息(源数据)和性能更好,可以通过SQL和DataSet API与Spark SQL进行交互。2.Spark SQL编程入门Spark SQL模块的编程主入口点是SparkSession,SparkSession对象不仅为用户提供了创建DataFrame对象、...
2019-12-08 15:33:19 2835
原创 【Kafka笔记】5.Kafka 多线程消费消息
Kafka多线程消费理解Kafka Java Consumer设计Kafka Java Consumer采用的是单线程的设计。其入口类KafkaConsumer是一个双线程的设计,即用户主线程和心跳线程。用户主线程,指的是启动Consumer应用程序main方法的线程,心跳线程(Heartbeat Thread)只负责定期给对应的Broker机器发送心跳请求,以表示消费者应用的存活性。官网...
2019-11-24 22:45:45 2923 2
原创 【Kafka笔记】4.Kafka API详细解析 Java版本(Producer API,Consumer API,拦截器等)
简介Kafka的API有Producer API,Consumer API还有自定义Interceptor (自定义拦截器),以及处理的流使用的Streams API和构建连接器的Kafka Connect API。Producer APIKafka的Producer发送消息采用的是异步发送的方式。在消息发送过程中,涉及两个线程:main线程和Sender线程,以及一个线程共享变量Recor...
2019-11-24 22:38:42 1247 2
原创 【Kafka笔记】2.Kafka常用命令操作
简介kafka可以使用java等编程语言实现topic以及消费消息,生产消息的操作,同样命令行也可以实现这些操作。Kafka的topic的增删改查对于kafka的topic操作,我们需要用到的是bin/kafka-topics.sh这个脚本文件。root@master:/opt/module/kafka_2.11-0.11.0.2# pwd/opt/module/kafka_2.11-0...
2019-11-06 23:19:11 1441
原创 【Kafka笔记】1.Kafka概述
1. 定义Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。2. 消息队列2.1 传统消息队列的应用场景传统使用场景就是异步处理:使用消息队列的好处:1)解耦允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。2)可恢复性系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所...
2019-10-31 22:39:28 428
原创 【Hive笔记】8.3——Hive主流文件存储格式对比实验
每种存储格式都有自己的用处,这里从存储文件的压缩比和查询速度两个方面对比存储文件压缩比测试测试数据为18.1M的日志文件。TextFile(1) 创建表,存储格式为TextFilecreate table log_text (track_time string,url string,session_id string,referer string,ip string,en...
2019-10-14 22:26:41 255
原创 【Hive笔记】8.2——文件存储格式
前言在hive中支持的存储数数据格式主要有:TEXTFILE,SEQUENCEFILE,ORC,PARQUET。列式存储和行式存储在当今的数据处理大致可分为两大类,联机事务处理OLTP(on-line-transaction processing)和联机分析处理OLAP(on-line Analytical processing)OLTP是传统关系型数据库的主要 应用,用来执行 一些基本的...
2019-10-09 22:34:43 217
原创 【Hive笔记】8.1——压缩和存储
前言hadoop是支持好几种格式的数据压缩,不同的压缩格式具有不同的压缩比和解压比。MR支持的压缩编码压缩格式工具算法文件扩展名是否可切分DEFAULT无DEFAULT.default否GzipgzipDEFAULT.gz否bzip2bzip2bzip2.bz2是LZOlzopLZO.lzo是Snappy无...
2019-09-26 22:03:48 171
原创 【Hive笔记】3—Hive数据类型
3.1 基本数据类型对于hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。Hive数据类型Java数据类型长度举例TINYINTbyte1byte有符号整数40SMALINTshort2byte有符号整数40INTint4byte有符号...
2019-09-24 20:31:12 269
原创 【Hive笔记】1——Hive入门
1. 什么是Hivehive是由Facebook开源用于解决海量结构化日志的数据统计Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供sql查询功能。本质:将HQL转化为Mapreduce程序Hive处理的数据存储在HDFS,HIve分析数据底层的实现是Mapreduce,执行程序运行在Yarn上2. Hive的优缺点优点:操作接口采用类sq...
2019-09-24 17:40:46 460
原创 【Hive笔记】练习hive操作
1.使用hive统计出每个用户的累积访问次数数据准备:userIdvisitDatevisitCountu012017/1/215u022017/1/236u032017/1/228u042017/1/203u012017/1/236u012017/1/218u022017/1/236u012017/...
2019-09-19 17:25:57 715
原创 【Hive笔记】6——Hive查询,分桶,常用函数,窗口函数
查询语句语法SELECT [ALL | DISTINCT] select_expr, select_expr,... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [ORDER BY col_list][CLUSTER BY col_list| [DISTRIBUTE BY col_list] [S...
2019-09-13 16:17:42 2911
原创 【Hadoop】 在yarn界面查看聚合日志报错
报错内容:Failed while trying to construct the redirect url to the log server.Log Server url may not be configured java.lang.Exception:Unknown container.Container either has not started or has already com...
2019-09-05 11:00:28 2302
原创 【Hadoop】出错:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist
简介在一次运行MR任务的时候,使用hadoop jar 或者 yarn jar都可以正常运行,但是使用java -cp的时候就总是出现Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/wordcount/w...
2019-09-05 10:48:25 8971 1
原创 【Oozie笔记】6. Oozie定时任务/循环任务
简介在使用oozie的时候我们经常使用定时任务,oozie给我们提供了调度定时任务的方法,就是Coordinator。目的就是周期性调度任务。Coordinator调度定时任务在使用Coordinator调度任务的首要时间就是调整好时区问题。如果你的服务器使用date -R 显示为:root@master:~# date -RTue, 03 Sep 2019 20:23:57 +080...
2019-09-04 19:30:26 1929
原创 【Oozie笔记】5. Oozie调度MapReduce任务
简介oozie运行mapreduce任务需要把用到的lib包放到任务目录的lib文件夹内,其他的文件和shell一样,只是里面的内容有变动。运行Hadoop的官方示例-wordCount示例jar包在hadoop-2.5.0-cdh5.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jarHDFS的文件...
2019-09-03 20:02:00 542
原创 【Oozie笔记】4. Oozie逻辑调度执行多个Job
简介oozie不仅可以执行单个任务,也可以在一个任务中执行多个job,只需要添加多个的action,并让第一个任务成功之后指向第二个任务等以此类推。执行多个job任务相比执行多个任务,我们的oozie的任务配置文件是需要做改动的。job.propertiesnameNode=hdfs://master:8020jobTracker=master:8032queueName=defau...
2019-09-02 20:00:59 866
原创 【Oozie笔记】3. Oozie调度shell脚本
简介Oozie已经安装完成了,我们使用Oozie调度Shell脚本。调度Shell脚本解压一下官方案例模板root@master:/opt/module/oozie-4.0.0-cdh5.3.6# tar -zxvf oozie-examples.tar.gz在examples目录下的apps中都是oozie的官方示例,平时多看看也是不错的。现在我们拿出来shell的示例/opt/m...
2019-09-01 17:33:33 2657
原创 【Oozie笔记】2. Oozie的部署
简介这一篇文章主要写如何部署Oozie,看了一下发现Oozie的包比hadoop的包都大,确实是一个体量很大的定时调度任务框架。前期准备包准备:ext-2.2.zip(一个JS的框架,主要用于Oozie前端的支持)hadoop-2.5.0-cdh5.3.6.tar.gz(使用的是CDH版本的Hadoop)oozie-4.0.0-cdh5.3.6.tar.gz (也是CDH版本的Ooz...
2019-09-01 01:30:26 322
C#大作业——图书管理系统(完整版)
2017-06-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人