自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Flink去重计数统计用户数

使用flink回撤流去重统计支付用户数

2023-12-26 11:15:27 1021

原创 春日旅游路线

西安、成都

2023-03-13 21:23:35 516

原创 hive学习笔记

hive SQL

2023-02-17 16:15:36 626

原创 hive posexplode炸裂函数

hive posexplode炸裂函数

2022-12-19 17:30:37 335

原创 mybatis-01

mybatis-01mybatis概述1.1、mybatis简介MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录.1.2、mybatis历史原是apache的一个开源项目iBati

2021-07-19 09:41:53 1025

原创 hive中如何判断字符串是否是数字

1. 通过 nvl函数实现判断字符串是否是数字SELECT nvl('1.x'+0,null) is not null; falseSELECT nvl('1'+0,null) is not null; true2. 通过正则匹配判断select '123456' rlike '^\d+$' ; true ;select '123456a' rlike '^\d+$' ; false;...

2021-02-19 18:55:35 10398

原创 窗口函数

1 窗口函数1)定义窗口函数属于sql中比较高级的函数mysql从8.0版本才支持窗口函数oracle 里面一直支持窗口函数hive也支持窗口函数以下函数才是窗口函数窗口函数:LEAD LEAD(col,n, default_val):往后第n行数据 col 列名 n 往后第几行 默认为1 默认值 默认nullLAG LAG(col,n,default_val):往前第n行数据 col 列名 n 往前第几行 默认为1 默认值 默认nullFIRST_VALU

2021-01-26 16:18:07 219

原创 flink-4

第1章 DWS层与DWM层的设计1.1设计思路我们在之前通过分流等手段,把数据分拆成了独立的kafka topic。那么接下来如何处理数据,就要思考一下我们到底要通过实时计算出哪些指标项。因为实时计算与离线不同,实时计算的开发和运维成本都是非常高的,要结合实际情况考虑是否有必要象离线数仓一样,建一个大而全的中间层。如果没有必要大而全,这时候就需要大体规划一下要实时计算出的指标需求了。把这些指标以主题宽表的形式输出就是我们的DWS层。1.2 需求梳理 统计主题 ...

2021-01-14 09:52:52 358 1

原创 flink-3

实时数仓第1章 DWS层与DWM层的设计1.1 设计思路我们在之前通过分流等手段,把数据分拆成了独立的Kafka Topic。那么接下来如何处理数据,就要思考一下我们到底要通过实时计算出哪些指标项。因为实时计算与离线不同,实时计算的开发和运维成本都是非常高的,要结合实际情况考虑是否有必要象离线数仓一样,建一个大而全的中间层。如果没有必要大而全,这时候就需要大体规划一下要实时计算出的指标需求了。把这些指标以主题宽表的形式输出就是我们的DWS层。1.2 需求梳理 统计主题.

2021-01-14 09:10:42 402 1

原创 flink-2

实时数仓项目第1章 分层设计在之前介绍实时数仓概念时讨论过,建设实时数仓的目的。主要是增加数据计算的复用性。每次新增加统计需求时,不至于从原始数据进行计算,而是从半成品继续加工而成。每层的职能 分层 数据描述 生成计算工具 存储媒介 ODS 原始数据,日志和业务数据 日志服务器,maxwell kafka .

2021-01-12 09:46:58 332

原创 Flink中的join实现原理

首先假如我们有两个Dataset,一个Dataset中的数据为用户信息,另一个Dataset中的数据是站点访问记录。case class PageVisit(url: String, ip: String, userId: Long)case class User(id: Long, name: String, email: String, country: String)如果想通过这两个Dataset获取来自中国用户的访问记录应该怎么做?很显然,把两个Dataset join一下然后根据cou

2020-12-19 09:59:25 1485 2

原创 Flink的非Barrier对齐可以优化高反压

问题导读1.Barrier 对齐会造成什么问题?目前的 Checkpoint 算法在大多数情况下运行良好,然而当作业出现反压时,阻塞式的 Barrier 对齐反而会加剧作业的反压,甚至导致作业的不稳定。2.Barrier 对齐是否会造成反压?3.如何理解Unaligned Checkpoint ?作为 Flink 最基础也是最关键的容错机制,Checkpoint 快照机制很好地保证了 Flink 应用从异常状态恢复后的数据准确性。同时 Checkpoint 相关的 metrics 也是.

2020-12-18 23:25:25 2690 2

原创 拉链表回滚

拉链表dwd_userinfo_db,目前时间是2020-12-15,想回滚到2020-11-27,那么拉链表的状态得是2020-11-26userid starttime endtime1 2020-11-12 2020-11-261 2020-11-27 9999-99-992 2020-11-16 2020-12-13sql拉链表回滚:过滤starttime<=2020-11-26的数据,将endtime>=2020-11-26的修改为9999-99-9

2020-12-18 07:28:41 760

原创 Flink不同版本的反压机制:逐级反压与动态反压

笔者最近回顾自己对Flink技术栈细节的理解,发现对Flink的网络栈、流控与反压这一套机制存在比较大的盲区。虽然平时多次处理过作业反压的问题,但是不完全理解背后的实现显然说不过去。于是专门写一篇总结,站在大佬们的肩膀上彻底搞清楚Flink是怎么做流控与处理反压的。▍Flink网络传输的数据流向Flink网络传输的数据流向如下图所示。Sender在发送数据时,首先写入TaskManager内部的网络缓存,利用Netty进行传输——将待发送的数据存入Netty的ChannelOutboundB

2020-12-12 14:28:53 338 1

原创 Flink八种分区策略

什么要搞懂什么是分区策略。分区策略是用来决定数据如何发送至下游。目前 Flink 支持了8中分区策略的实现。GlobalPartitioner数据会被分发到下游算子的第一个实例中进行处理。ShufflePartitioner数据会被随机分发到下游算子的每一个实例中进行处理。RebalancePartitioner数据会被循环发送到下游的每一个实例中进行处理。RescalePartitioner这种分区器会根据上下游算子的并行度,循环的方式输出到下游算子的每个实例。这里有点难以理解,假设上游并...

2020-12-11 13:29:01 2928 2

原创 SparkStreaming的背压机制

Spark 1.5以前版本,用户如果要限制Receiver的数据接收速率,可以通过设置静态配制参数“spark.streaming.receiver.maxRate”的值来实现,此举虽然可以通过限制接收速率,来适配当前的处理能力,防止内存溢出,但也会引入其它问题。比如:producer数据生产高于maxRate,当前集群处理能力也高于maxRate,这就会造成资源利用率下降等问题。(注:当处理能力小于接收速率时,容易造成内存溢出,但是当大于限制的接收速率时,又会浪费性能优势)为了更好的协调数据接收速率与

2020-12-08 13:37:50 1056 2

原创 秒懂Flink反压机制

在说flink的反压之前,先来说下strom和spark streaming的反压。Strom 反压如图是strom的反压,是通过zookeeper来决定的,当strom感受到处理不过来的时候,就会像zookeeper增加一个znode,然后strom发现了这个znode,对应的上游数据就会阻塞,不会发送数据。Spark Streaming 反压Spark Streaming的反压是从1.5版本以后引入的。在这之前,基本就是通过控制最大接受速率来控制的。譬如,如果是基于Receiver形

2020-12-07 15:23:53 906

原创 Flink知识点或面试题

Flink 1 简单介绍一下 FlinkFlink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。Flink提供了诸多高抽象层的API以便用户编写分布式任务:DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。DataStream API,对数据流进行流处理操作,将流式

2020-12-06 12:02:27 1131

原创 快速了解log4j 日志框架

快速了解log4j 日志框架log4j 是 apache 的一个开源项目, 通过 log4j, 可以控制日志信息输送的目的地是 console, file, GUI 组件, 甚至是套接口服务器, NT 的时间记录器等; 也可以控制每一条日志的输出格式; 还可以通过定义每一条日志信息的级别, 更加细致地控制日志生成发的过程.这些都可以通过一个配置文件来灵活地进行配置, 而不需要修改应用的代码.具体来说, 比如:日志监控打印, 在项目试运行期间需要记录用户所有的操作;添加新的内容, 比如时间和线程;

2020-12-03 13:34:25 245

原创 hive的类型转换

hive的类型转换Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。1.隐式类型转换规则如下(1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。(2)所有整数类型、FLOAT和STRING类型都可以隐式地转

2020-12-01 22:18:32 682

原创 以Hexo框架腾讯云服务器搭建博客记录

以Hexo框架腾讯云服务器搭建博客记录服务与框架服务器: 腾讯云云服务器标准型SA2,配置1核 2GB 1Mbps框架: HexoHexo 主题: cactus本地端安装依赖由于 Hexo 是基于 Node.js 的, 所以需要先安装 Node.js.从官方网站下载长期支持版本, 然后安装即可, 安装完之后会显示安装的路径, 可以发现同时安装了 Node.js 和随之的包管理工具 npm. 可以通过在终端输入以下命令查看是否安装成功:# user @ usermbp in ~ [22:41

2020-11-28 16:15:10 332

原创 Hadoop 总结

Hadoop 总结HadoopHadoop的组成hadoop 1.x: HDFS: 存; MapReduce: 算 + 资源调度(内存, CPU, 磁盘, 网络带宽…)hadoop 2.x/3.x: HDFS: 存; MapReduce: 算; Yarn: 资源调度HDFS的架构HDFSHadoop分布式文件系统, 文件系统是用于对文件进行存储和管理.分布式可以理解为由多台机器共同构成一个完整的文件系统.NameNode(nn)描述: 负责管理HDFS中所有文件的元数据信息.元数据:

2020-11-28 16:08:35 525

原创 SSH登录认证简析

SSH登录认证简析公钥与私钥公钥 (Public Key) 与私钥 (Private Key) 是通过一种算法得到的一个密钥对 (即一个公钥和一个私钥), 公钥是密钥对中公开的部分, 私钥则是非公开的部分. 公钥通常用于加密会话密钥, 验证数字签名, 或加密可以用相应的私钥解密的数据. 通过这种算法得到的密钥对能保证在世界范围内是独一的. 使用这个密钥对的时候, 如果用其中一个密钥加密一段数据, 必须用另一个密钥解密. 比如用公钥加密数据就必须用私钥解密, 如果用私钥加密也必须用公钥解密, 否则解密将不

2020-11-28 16:05:52 1301

原创 Repost - Hive SQL的编译过程

Repost - Hive SQL的编译过程Hive的服务端1.Driver组件:该组件包括:Compiler、Optimizer、Executor,它可以将Hive编译、解析、优化转化为Map Reduce任务提交给Hadoop中的Source Manager来进行实际的执行相应的任务。2.Meta Store组件:存储着hive的元数据信息,将自己的元数据存储到了关系型数据库中,支持的数据库主要有MySQL、Derby,支持把meta store独立出来放在远程的集群上面,使得hive更加健壮。元

2020-11-28 08:10:59 158

原创 Mysql Transaction(事务)

Mysql Transaction(事务)数据库事务 (简称: 事务) 是数据库管理系统执行过程中的一个逻辑单位, 由一个有限的数据库操作序列构成.数据库事务通常包含了一个序列的对数据库的读/写操作, 包含有以下两个目的:为数据库操作序列提供了一个从失败中恢复到正常状态的方法, 同时提供了数据库即使在异常状态下仍能保持一致性的方法.当多个应用程序在并发访问数据库时, 可以在这些应用程序之间提供一个隔离方法, 以防止彼此的操作互相干扰.当事务被提交给了数据库管理系统 (DBMS), 则 DBMS 需

2020-11-28 08:05:30 231

原创 Spark源码解析2-YarnCluster模式启动

Spark源码解析2-YarnCluster模式启动YARN 模式运行机制Yarn Cluster 模式执行脚本提交任务,实际是启动一个 SparkSubmit 的 JVM 进程;SparkSubmit 类中的 main 方法反射调用 YarnClusterApplication 的 main 方法;YarnClusterApplication 创建 Yarn 客户端,然后向 Yarn 服务器发送执行指令:bin/java ApplicationMaster;Yarn 框架收到指令后会在指定的

2020-11-27 11:19:25 166

原创 Spark源码解析1-通信框架与Standalone模式启动

Spark源码解析1-通信框架与Standalone模式启动Spark 通讯架构RPCRPC 是远程过程调用, Netty 就是一种基于 Actor 模型的 RPC 框架.在 Hadoop 中 NN 与 DN 要通信, HBase 中 HMaster 和 HRegionServer 要进行通信, 其实都是用 RPC 的通信方式, 只不过对比 Hadoop, Spark 不一样, 又进行了一层封装, 源码看起来更加友好.RPC 通信基于服务端与客户端的通信方式, 比如 Hadoop 中 NN 与 D

2020-11-27 11:16:44 255

原创 维度建模理论与数仓分层思想

维度建模理论与数仓分层思想维度建模ODS 层因为保留原始数据, 所以和业务数据库 (关系模型) 一样是关系模型.DWD 层即进行了维度建模, 将下面的模型 ↓转化为了下面的维度模型, 即以事实表为中心, 周围有一圈的维度表 ↓维度模型中的表数据 (数据特征) 可能有冗余, 但查询时一般只需要进行事实表和维度表进行 join, 不用 join 太多表, 查询性能更好.在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型。但生产中事实表不可能只有一张, 所以多个事实表多个维度表结合

2020-11-24 13:23:13 1483

原创 hive自定义分区器

Hive自定义分区器流程1.自定义类实现org.apache.hadoop.mapred.Partitioner(必须为这个,Hive中使用的是老的API)接口package com.ailibaba;import org.apache.hadoop.hive.ql.io.HiveKey;import org.apache.hadoop.io.BytesWritable;import org.apache.hadoop.mapred.JobConf;import org.apach

2020-11-24 09:18:43 714

原创 Canal HA 服务端集群搭建记录

Canal HA 服务端集群搭建记录背景与版本记录从 2018 年 9 月实时项目立项开始, 业务数据的同步就采用了 canal, 当时 1.1.0 版本刚好原生支持了 kafka 消息的投递, 但还不支持 serverMode 直接切换, 所以最开始我们选择的 serverMode 依然是 tcp 类型.1.1.2 版本是我们升级的一个版本, 1.1.4 全面兼容 MySQL DDL 的解析能力, 我们在几个月前也将 canal 集群更新到了 1.1.4 这个版本.HA 架构Canal 的 HA

2020-11-24 09:13:16 288 1

原创 Homebrew常见问题

Homebrew常见问题安装请按照官网的命令进行安装即可: https://brew.sh/需要注意的是,homebrew 本身安装的位置是:/usr/local/Homebrew并在 /usr/local/bin内创建了 homebrew 的启动程序 brew 的软连接:# amos @ amosmbp in /usr/local/bin [7:36:03]$ ll brewlrwxr-xr-x 1 amos admin 28B 1 25 23:37 brew -> /

2020-11-24 09:09:08 688

原创 kafka 精准一次性

kafka 精准一次性kafka 精准一次性重要性在很多的流处理框架的介绍中, 都会说 kafka 是一个可靠的数据源, 并且推荐使用 kafka 当作数据源来进行使用. 这是因为与其他消息引擎系统相比, kafka 提供了可靠的数据保存及备份机制. 并且通过消费者 offset 这一概念, 可以让消费者在因某些原因宕机而重启后, 可以轻易得回到宕机前的位置.而 kafka 作为分布式 MQ, 大量用于分布式系统中, 如消息推送系统, 业务平台系统 (如结算平台), 就拿结算来说, 业务方作为上游把

2020-11-23 22:33:12 3136 1

原创 JUC-Executor Framework

JUC-Executor FrameworkExecutor 框架Java 5 初次引入了Concurrency API, 并在随后的发布版本中不断优化和改进. Executor 框架简单地说是一个任务的执行和调度框架, 涉及的类如下图所示:Executor其中, 最顶层是 Executor 接口, 它的定义很简单, 一个用于执行任务的 execute 方法, 如下所示:public interface Executor { void execute(Runnable command);

2020-11-23 19:38:47 110

原创 分布式系统的 CAP 原则

分布式系统的 CAP 原则CAP 理论概述CAP理论告诉我们,一个分布式系统不可能同时满足以下三种一致性(C:Consistency)可用性(A:Available)分区容错性(P:Partition Tolerance)这三个基本需求,最多只能同时满足其中的两项,因为P是必须的,因此往往选择就在CP或者AP中。一致性(C:Consistency)在分布式环境中,一致性是指数据在多个副本之间是否能够保持数据一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保

2020-11-23 17:55:13 1882

原创 Flink SQL深度篇

Flink SQL深度篇问题导读怎样优化Logical Plan?怎样优化Stream Graph?TimeWindow, EventTime, ProcessTime 和 Watermark 四者之间的关系是什么?序言时效性提升数据的价值, 所以 Flink 这样的流式 (Streaming) 计算系统应用得越来越广泛.广大的普通用户决定一个产品的界面和接口. ETL开发者需要简单而有效的开发工具, 从而把更多时间花在理业务和对口径上. 因此流式计算系统都趋同以 SQL 作为唯一开发语言

2020-11-23 17:52:03 821

原创 Flink维度关联的几种思路

在实际生产中,我们经常会有这样的需求,需要以原始数据流作为基础,然后关联大量的外部表来补充一些属性。例如,我们在订单数据中,希望能得到订单收货人所在省的名称,一般来说订单中会记录一个省的 ID,那么需要根据 ID 去查询外部的维度表补充省名称属性。在 Flink 流式计算中,我们的一些维度属性一般存储在 MySQL/HBase/Redis 中,这些维表数据存在定时更新,需要我们根据业务进行关联。根据我们业务对维表数据关联的时效性要求,有以下几种解决方案:实时查询维表关联预加载维表关联热存储关联其

2020-11-23 16:17:30 1096

原创 hive中文注释乱码解决方案

hive元数据metastore默认的字符集是latin1,所以中文注释会乱码,但是不能将metastore库的字符集更改为utf-8,只能对特定表、特定列修改为utf-8。①在Hive元数据存储的Mysql数据库中,执行以下SQL:#修改字段注释字符集alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;#修改表注释字符集alter table TABLE_PARAMS modify column

2020-10-30 22:53:00 508

转载 KUDU 介绍

前言近两年,KUDU 在大数据平台的应用越来越广泛。在阿里、小米、网易等公司的大数据架构中,KUDU 都有着不可替代的地位。本文通过分析 KUDU 的设计, 试图解释为什么 KUDU 会被广泛应用于大数据领域,因为还没有研究过 KUDU 的代码,下面的介绍是根据 KUDU 的论文和网上的一些资料学习自己理解所得,如有不实之处,劳请指正。背景在 KUDU 之前,大数据主要以两种方式存储:静态数据:以 HDFS 引擎作为存储引擎,适用于高吞吐量的离线大数据分析场景。这类存储的局限性是数据无法进行

2020-10-21 20:29:35 604 1

原创 hive on spark 精度匹配异常

错误类型:org.apache.hadoop.hive.ql.parse.SemanticException:Line 55:23 Cannot insert into target table because column number/types are different ''2020-06-14'': Cannot convert column 7 from array<struct<sku_id:string,sku_num:bigint,order_count:bigint,orde

2020-10-16 19:12:09 1004

原创 hive on spark 的nvl函数类型一致

报错:[42000][3] Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Spark job failed during runtime. Please check stacktrace for the root cause.错误原因:nvl函数(字段,默认值),要求字段类型与默认值类型必须一致,特别

2020-10-16 18:58:53 1780

空空如也

空空如也

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

TA关注的人

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