自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 Screw基本使用

screw

2022-06-14 15:31:48 472 1

原创 Flink笔记-迭代计算

public class IterateStream { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(3); DataStreamSource<String&gt.

2022-05-09 19:52:39 654

原创 Flink笔记-异步IO

1、异步IOAsyncDataStreamAsync I/O提供了两种模式:ORDERED和UNORDERED.UNORDERED:异步请求一结束就马上输出结果,因为异步请求完成时间的不确定性,结果输出的顺序可能和输入不同.此模式调用:AsyncDataStream.unorderedWait(...)ORDERED:在这个模式下结果输出的顺序和输入的顺序是一样的,为了实现这一...

2022-05-09 19:51:51 1137

原创 Flink笔记-双流join

一、intervalJoin流A intervalJoin 流B,只要满足以下条件即为join成功。流B的时间戳大于等于流A的时间戳减下界且流B的时间戳小于等于流A的时间戳加上界且流A的key等于流B的key。ProcessJoinFunctionpublic class TwoStreamJoinStream { public static vo...

2022-05-06 21:19:17 525

原创 Flink笔记-window窗口

一、不分组窗口函数public class WindowStream { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(3); env.setStreamTimeCha

2022-05-06 21:17:14 391

原创 Flink笔记-广播流

一、keyBy的广播流使用KeyedBroadcastProcessFunctionpublic class TwoStreamJoinWithBroadcastStream { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment...

2022-05-06 21:13:13 2882

原创 Flink笔记-Watermark

一、两种watermark类型1、Periodic(常用)周期性(一定时间间隔或者到达一定记录数)生成watermark。对应接口:AssignerWithPeriodicWatermarks必须结合时间或者累计条数两个维度,否则在极端情况下会有很大的延时。两个个抽象类:AscendingTimestampExtractorBoundedOutOfOrd...

2022-05-06 21:11:47 241

原创 Flink笔记-侧输出流

public class OutPutTagStream { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(3); FlinkKafkaConsumer010<St.

2022-05-06 21:10:33 601

原创 Flink-读取kafka的数据及Checkpoint配置

public class KafkaSourceStream { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(3); env.enableCheckpointing(5.

2022-05-06 21:09:40 1584 1

原创 Flink笔记-sink写入kafka

public class KafkaSinkStream { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(3); DataStreamSource<String&.

2022-05-06 21:08:55 1073

原创 Flink笔记-idea中启动webUI

1、maven依赖<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-runtime-web_2.12</artifactId> <version>1.10.1</version> <scope>compile</scope></dependency>2、代码

2022-05-06 21:07:56 768

原创 BitMap的小实践

一、需求场景 每天大量数据入库,但是90%以上的数据都是主键冲突的,如果主键冲突则跳过,如果不冲突则写入。 比较简单的逻辑是,每来一条数据就在表里查询一下主键是否已经存在,如果存在跳过,如果不存在写入。但是这样的情况会导致大量的数据库查询操作,因此采用在内存中构建一个bitmap,通过bitmap判断数据是否需要写入,从而避免大量的低价值的查询操作。二、BitMap代码class BitMap(object): def __init__(self,m...

2022-04-28 21:36:59 801

原创 HdfsReader数据包含双引号导致数据拉取异常

1、问题场景使用datax从hive同步数据到orace。采用了hdfsreader和oraclewriter。当hdfs上的数据的某一个列是以“双引号”开头的,会导致“双引号”后的所有数据被当做一个长字符串,进而导致同步数据失败。2、问题定位翻看datax的hdfsreader部分的源码,发现datax在读取数据时采用了com.csvreader.CsvReader这个工具。3、测试com.csvreader.CsvR...

2022-04-25 21:40:27 1785

原创 DataX核心源码流程

2022-03-27 19:43:00 345

原创 Swagger配置

1、maven依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version></dependency><dependency> <groupId>io.springfox</g

2022-02-15 08:48:53 266

原创 Mybatis-plus自动代码生成

1、maven依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.5</version></dependency><dependency> <groupId>org.apache.velocity<

2022-02-15 08:47:39 908 2

原创 Java笔记-Logback

1、logback.xml<?xml version="1.0" encoding="UTF-8"?><configuration> <!--配置--> <property name="pattern" value="%msg%n"/> <property name="pattern_spring" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %c %M%L [%thread] %

2022-02-15 08:24:21 239

原创 Spark调优笔记1

一、调优原因今年随着一部分原始日志的数据量快速增长,目前已经翻了3-4倍左右,导致目前系统凌晨的etl任务中有一部分spark任务的整体处理时长即将超出阈值,可能会造成不同任务之间的互相干扰。因而此处spark有待调优。而且临界新年,新年数据量势必大量增长,不想过年放假的时候处理故障。二、调优方案此处spark任务主体逻辑是,读取hive上的日志文件,过滤主题后经过一些系列的处理、计算,再写入的hdfs上,最后挂载到hive中。计算有一部分...

2022-02-13 22:39:12 790

原创 Spark源码之coalesce算子

1、问题背景总所周知,spark的rdd编程中有两个算子repartition和coalesce。公开的资料上定义为,两者都是对spark分区数进行调整的算子。repartition会经过shuffle,其实际上就是调用的coalesce(shuffle=true)。coalesce,默认shuffle=false,不会经过shuffle。当前仅针对coalesce算子考虑,我们看一下官方的定义:大概意思...

2022-02-13 22:30:14 4859

原创 Kimball架构与Inmon架构

Inmon架构的思想在于自上而下的构建数据模型。以数据源头开始,数据以瀑布流式的向下流动,更加注重数据清洗。其核心思想在于数仓分层。(换言之就是,尽量将某一主题域的所有数据都考虑到数据建模中。这样设计的数据模型的覆盖面会更广,但是数据模型的设计会困难)Kimball架构的思想在于自下而上的构建数据模型。以具体业务诉求为出发点,设计数据模型。其核心思想在于维度建模。(即根据业务需求找到关注的数据指标,基于关注的数据指标设计数据模型。这样设计的数据模型会更加的独立,但可能会导...

2022-02-10 22:53:50 699

原创 数据仓库的四大特点

1、面向主题的与业务系统不同的是,业务系统关注的面向业务过程的事务处理,而数据仓库关注的是面向主题的数据分析。因此的数仓中的数据,是按照不同的主题区分的。2、集成的数仓仓库中的数据不是凭空产生的,数据仓库是一个仓库,他不直接产生数据,二是集成各个系统数据,并进行统一化的存储、设计。3、稳定的数据仓库的数据一旦进入数据仓库,就不可修改的了,及每次相同条件的查询的结果的一致的。4、反映历史变化的也业务系统不同的是,业务系...

2022-02-10 22:49:22 4057

原创 数据仓库为什么采用分层架构

数据仓库为什么采用分层架构?现代数据仓库的分层架构最主要的原因在于两点。第一是将复杂的数据数据处理流程解耦。以阿里巴巴推行的分层架构方案来看,数据仓库初步份分为了ODS、CDM、ADS三层:ODS负责数据接入,CDM负责数据模型设计,ADS负责数据的应用产出。实现了数据接入、处理、输出的解耦。而CDM中又分为DIM、DWD、DW、DWS:将数据分为是事实表和维度表,事实表关注的具体的事件,维度表关注事件的相关信息,进一步将数据的的功能的解耦。第二是...

2022-02-10 22:40:08 1150

原创 企业数据发展三阶段

对于一个企业来讲,数据能力的发展我个人总结为了了以下三个阶段阶段一:数据仓库阶段数据能力刚刚建起,数据团队开始逐步接入各个业务体系数据,以及设计接入埋点的数据。面对各方涌入的大量数据,搭建企业级数据仓库,对于数据进行有规划的接入,存储,建模,分析。初步具备数据资产的管理能力,以及面向业务团队的支撑能力。但是对外的产出大量依赖于人力的获取或者简单的bi查询。此阶段的重点是:数据同步,数据建模开发。阶段二:数据平台阶段...

2022-02-10 22:37:35 3775 1

原创 水塘抽样算法(Spark RangePartitioner的抽样算法)

1、水塘抽样解决的问题对一个数量未知的样本,希望只经过一次遍历就完成随机抽样,即时间复杂度O(n)。因为样本数量未知,因此就不能通过random函数直接随机抽样。2、水塘抽样的逻辑希望在n个样本中随机抽取k个数据。即每个数据被抽取的概率为k/n。首先我们创建一个k个成员的数组out,用来存放预期抽出的样本。(1)当k>=n时,每一个样本被抽取的概率都为100%。因此都可以直接放入数组out。(2...

2022-01-17 19:29:24 3460

原创 内存不足时的大文件排序算法(spark shuffle的排序算法)

1、问题场景例如:当前磁盘2T,内存16G,文件大小500G。现在需要对500G的大文件进行排序,并存道另一个文件中。抽象:当前有包含10000行数的文件,再只能使用长度为1000的数组的前提下,对文件中的数据进行排序,并存道另一个文件中。2、问题分析首先,数据的总量大于了所能使用的内存数据结构的容量,所以肯定不能完全通过内存排序。因此需要采用一种分治的思想来实现全局排序。(1)数组总量10000,数组容量1000,所以...

2022-01-17 18:47:11 3570 1

原创 Spark资源分配

一、整体情况1、服务器资源5台datanode节点cpu:48 查看命令:cat /proc/cpuinfo | grep processor | wc -l内存:128G 查看命令:free -h2、yarn资源yarn.nodemanager.resource.cpu-vcores = 36yarn.nodemanager.resource.memory-mb = 70G注...

2022-01-15 15:14:40 2038

原创 Spark源码之Rpc网络系统及任务提交消息传递流程源码图

一、从netty角度分析首先我们都知道,spark1.6+之后整个rpc网络都是采用的netty实现。1、netty基本原理netty可以理解为客户端和服务端的通信。服务端的固定唯一的,客户端是随机多个的,客户端向服务端发送消息,服务端接受并处理消息。netty的客户端持有一个send方法,调用send方法就可以屏蔽网络上的实现将消息发送给服务端。netty的服务端会事先注册好一个或多个入站处理器,当有消息进入时。会经过入站处理器,一般来讲入站...

2022-01-15 15:10:08 1672

原创 Spark源码之存储体系简介及缓存cache源码流程图

一、Spark存储系统Spark存储系统,主要可以分为以下四个部分:块管理,块传输,磁盘存储,内存存储。1、块管理1.1 BlcokManagerMaster存在于driver端。在创建SparkEnv的时候创建。BlockManagerMaster主要用于对BlockManager进行统一的管理,主要负责发送消息。1.2 BlockManager即存在于driver端也存在于executor端。在创建Spa...

2022-01-13 20:17:47 449

原创 SparkConf源码简析

1、所有的配置存储在一个ConcurrentHashMap中,名为settings。2、Spark的参数配置有以下三种获取。源于系统参数中以spark为前缀的属性。(通过System.getProperties获取)使用SparkConf的API设置的。从其他SparkConf中克隆的。3、源于系统参数中以spark为前缀的属性。4、使用SparkConf的API设置的5、从其他SparkC...

2021-10-26 09:00:34 735

原创 spark-sql join原理

一、Hash Join场景:对于输入的两张小表进行单机的join运算。原理:两张表中相对小的一张表作为Hash表加载到内存中,另外一张表作为探测表,循环去Hash表中探测匹配。二、Broadcast Hash JoinHash Join在分布式场景下的一种实现。场景:对于输入的两张表,一张大表,一张小表(小于10M)原理:将小表广播分发到另一张大表所在的分区节点上,分别并发地与其上的分区记录进行has...

2021-10-26 08:38:40 314

原创 Hadoop集群无法停止 no namenode to stop

发现问题的起因是,今天规划对hadoop的一些配置参数进行调优。停hadoop集群的时候发现停不下来。输出如下:1、查找问题输出显示找不到namenode、datanode等进程,但是jps查看所有进程都正常运行着。原因能存在执行的hadoop/sbin的sh脚本里。百度没有查到合适的解决办法。于是反查stop-all.sh脚本。发现stop-all.sh 调用的stop-dfs.sh和stop-yarn.sh。两者又调用的hadoop-...

2021-07-19 18:56:06 1600

原创 Hive 中的join和谓词下推

总所周知,Hive本身会对执行的HQL代码做很多优化,其中之一就是谓词下推。所谓谓词下推,就是

2021-07-12 20:41:59 1383 2

原创 Docker笔记

一、Docker安装1、yum包更新yum update2、安装需要的软件包yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yum install -y yum-utils device-mapper-persistent-data lvm23、设置yum源yum-config-manager --add-repo https://do...

2021-07-11 16:28:29 83

原创 Maven笔记

一、pom文件格式<!-- Maven pom对象模型版本号 --><modelVersion></modelVersion> <!-- 打包方式,web工程打包为war,java工程打包为jar(默认) --><packaging></packaging> <!-- 组织id --><groupId></groupId> <!-- 项目id -->&l

2021-07-05 21:15:25 198

原创 自定义UDF-集合交集、并集、差集

最近有这样一个需求,表A有一列集合Array,表B有一列集合Array,然后如果A中的集合和B中的集合有重复的项就保留,换言之就是要求表A中的集合和表B中集合的交集。例如:输入>>: select array_intersect(array('a','b'),array('b','c'))输出>>: ['b'] 据了解,hive没有现成的对集合做交集的函数。因此自定义了对集合的交集、并集、差集的函数。代码及注册如下。1、数组交集...

2021-07-01 19:52:38 1353 3

原创 Java8 新时间类LocalDate

1、获取当前日期、时间、日期时间// 当前日期LocalDate nowDate = LocalDate.now();// 当前时间LocalTime nowTime = LocalTime.now();// 当前日期时间LocalDateTime nowDateTime = LocalDateTime.now();2、生成指定日期、时间、日期时间LocalDate ofDate = LocalDate.of(2021, 6, 20);LocalTime ofTime =

2021-06-30 21:16:01 220

原创 Sqoop1 使用

sqoop安装sqoop安装还算简单,再服务器上解压安装文件。sqoop安装目录如下:修改配置文件conf/sqoop-env.sh(我自己改过名),指定hadoop和hive。lib目录添加ojdbc和java_json的驱动包。sqoop使用oracle导入hdfsbin/sqoop import \--connect jdbc:mysql://hadoop102:3306/comp...

2021-06-29 21:55:48 218 1

原创 修改notebook默认工作路径

1. cmd启动,输入 jupyter notebook --generate-config ,找到notebook配置文件路径。2.打开配置文件,在notebook_dir,在后面添加指定的路径,如'E:\python_code',解除注释,保存。3.开始菜单 -> anaconda -> jupyter notebook 右键打开文件位置4.右键jupyter notebook -> 属性 -> 快捷方式 -> 去掉“目标”...

2021-06-28 21:41:40 289

原创 Python修改镜像源

国内镜像源清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:https://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/临时使用方法:可以在使用pip的时候加参数 -ipip install pycrytodome -i https://pypi.tuna.ts...

2021-06-28 21:37:12 111

原创 Java笔记 - jar基本命令

一、jar命令Jar命令可以将应用程序打包,对外提供一个单独的文件,而不是包含大量类文件的目录结构。JAR文件是压缩的,它使用ZIP压缩格式。1、jar程序选项 c 创建一个jar包(如果目录则递归处理) e 在清单文件中创建一个入口点 f 指定jar包的文件名(第二个参数) i 为指定jar文件创建索引文件 m 指定清单文件(manifest.mf) t 显示内容表 u 更新一个已有的jar文件 v...

2021-06-26 20:37:55 750

空空如也

空空如也

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

TA关注的人

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