自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 事件时间+时间窗口,最后一个窗口不执行问题踩坑与源码分析

举例说明,在按小时的滚动窗口中,假设当前时间是12:05点,按照正常预想13:00时窗口会触发执行,但是在12:00到13:00的时间段内,最后一个事件的时间是12:50,之后再未产生新的事件,那么在13:00的时候,窗口并不会触发执行,只有当后续再产生新的事件,并且事件时间大于13:00时,12-13的窗口才会执行。在实际开发过程中可能会带来一些问题,当事件不是源源不断的产生时,最后一个窗口不执行,影响结果。示例代码见末尾。

2024-04-07 09:46:14 526 1

原创 HiveSQL如何生成连续日期剖析

情景假设:有一结果表,表中有start_dt和end_dt两个字段,,想要根据开始和结束时间生成连续日期的多条数据,应该怎么做?直接上结果sql。(为了便于演示和测试这里通过模拟一个结果表数据)如果对涉及到的函数和语法不是特别了解,直接看到上述结果可能有点懵,接下来换个形式理解下,即如下sql如上sql结构比较简单,即t1表和t2表进行笛卡尔集,t1是原始表只有1行数据,但是结果是6行数据,因此关键点是t2的结果。

2024-04-07 09:42:12 697

原创 kafka-consumer-groups.sh

通过kafka-consumer-groups.sh 脚本查看或变更消费组的信息。消费组一共有 Dead 、Empty 、PreparingRebalance 、CompletingRebalance 、Stable 这几种状态,正常情况下, 一个具有消费者成员的消费组的状态为Stable 。可以通过 state 参数来查看消费组当前的状态, 示例如下:./kafka-consumer-groups.sh --bootstrap-server 169.163.100.10.208.180.222.

2023-10-31 16:38:00 833

原创 Hive中分区数函数使用详情和误区

percentile和percentile_approx函数使用详情和误区

2022-10-24 16:56:48 2761 1

原创 hiveSql正则方式提取字段中的内容

regexp_extract方法正则提取string中的内容

2022-10-24 16:54:29 4202

原创 类型不同的字段直接作为on条件时的注意事项

在join时,如果两个表中表示相同含义的两个字段类型不同,虽然可以不进行类型转换,直接作为on条件,但是有坑

2022-08-21 11:38:01 297

原创 select字段列表中无法使用计算出来的值进行再次计算

select字段列计算出来的结果无法在当前列中再次使用,需要嵌套子查询才可以使用

2022-08-21 11:30:20 392

原创 HiveQL中left join误区和多join的执行顺序

join中on条件和where条件中区别、以及多个join的执行顺序

2022-08-21 11:21:12 3487

原创 hive中collect_list和concat_ws函数对null值的处理

hive中collect_list和concat_ws函数在处理null值(或包含)时的结果

2022-08-21 11:07:48 3769

原创 null值对group by和over中partition by的影响

hive或spark中,null值对group by和over中partition by的影响

2022-08-21 10:54:39 1267

原创 期望值、方差和标准差分别描述了什么?

期望值、方差和标准差的定义和描述了什么。

2022-07-30 17:21:45 3135 1

原创 hadoop dfs、hadoop fs和hdfs dfs的区别

执行 hdfs 命令后可以看到如下帮助信息:Usage: hdfs [--config confdir] [--loglevel loglevel] COMMAND where COMMAND is one of: dfs run a filesystem command on the file systems supported in Hadoop. classpath prints the classpath nam

2022-04-14 10:56:11 3829

原创 5步完成IDEA自定义TODO和快捷键设置

文章目录5步完成IDEA自定义TODO和快捷键设置5步完成IDEA自定义TODO和快捷键设置在setting中选择TODO,先设置Pattrens设置Filters,选择第一步新增的Patterns完成以上两步骤后,自定义的TODO已经设置完成,但是还无法通过像默认的todo一样,输入todo+tab键快捷输入,需要设置以下步骤选择Live Templates,并增加Live Template如下图所示进行设置设置Template生效的文件类型以上步骤设置完

2022-01-24 11:11:16 4549

原创 Hadoop Configuration 类加载属性解析

文章目录Hadoop Configuration 类加载属性解析1. 疑问1.1. 结论2. 从源码中一探究竟2.1. `new Configuration()`时发生了什么2.2. `configuration.get("fs.defaultFS")`时发生了什么Hadoop Configuration 类加载属性解析以下过程在3.2.2版本的源码上分析1. 疑问当我们创建HDFS client时,最简单的做法如下:Configuration configuration = new Conf

2021-12-25 16:16:25 2198

原创 SUM(A)+SUM(B)和SUM(A+B)不相等问题踩坑

null值在聚合函数中的处理和影响

2021-12-14 13:32:42 2387

原创 基于MeteStore查看hive磁盘占用

文章目录1. 相关元数据表介绍2. 示例关于hive中Statistics特性请查看Statistics in Hive1. 相关元数据表介绍DBS 表用于存储hive数据库信息, 包含数据库名、文件系统路径等。通过DB_ID字段与其他表相关联。TBLS 表用于存储Hive表、视图、索引表的基本信息,包含表名、表类型(外部表等)、所属数据库id、创建时间等信息。该表中有全部hive表信息TABLE_PARAMS 表存储全部hive表的一些额外信息(表属性以及其他统计信息)。该表只有3个

2021-12-05 21:46:26 403

原创 Git 使用小结

文章目录GIT1. 仓库1.1. 创建本地仓库2. 暂存区2.1. 得到上一次commit后的所有改动详情2.2. 提交修改2.3. 查看commit历史记录3. 关于远程仓库3.1. 位置3.2. 创建远程仓库3.3. origin3.4. 连接一个远程仓库3.5. 整合远程分支中的内容到本地分支3.6. 将本地分支推送到远程仓库4. GIT分支4.1. 本地创建新分支4.2. 暂时保存更改4.3. checkout到指定分支4.4. 分支的模式4.4.1. release分支4.4.2. hotfix分

2021-11-21 15:01:18 466

原创 Process

在编写Java程序时,有时候需要在Java程序中执行另外一个程序。Java提供了两种方法用来启动其它程序:1. 使用Runtime的exec()方法2. 使用ProcessBuilder的start()方法不管在哪种操作系统下,程序具有基本类似的一些属性。一个程序启动后就是程序操作系统的一个进程,进程在执行的时候有自己的环境变量、工作目录。能够在Java中执行的外部程序,必须是一个实...

2021-01-26 00:39:55 1024

原创 Java Timer使用

Timer类是一种线程设施,可以用来实现某一个时间或某一段时间后安排某一个任务执行一次或定期重复执行。该功能和TimerTask抽象类配合使用。TimerTask抽象类实现了Runnable接口,用于实现由Timer安排的一次或重复执行的某个任务。每一个Timer对象对应的是一个线程,因此计时器所执行的任务应该迅速完成,否则会延迟后续的任务执行。java.util.Timer类1、vo...

2021-01-18 10:47:35 276

原创 YARN基本架构

文章目录1. YARN基本架构1.1. YARN基本组成结构1.2. YARN工作流程1. YARN基本架构YARN是Hadoop2.0中的资源管理系统,基本设计思想是将MRv1中的JobTracker拆分成两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序持有的ApplicationMaster。ResourceManager:负责整个系统的资源管理和分配ApplicationMaster:负责单个应用程序的管理1.1. YARN基本组成结构YARN总体上仍然

2020-10-30 00:00:45 3050

原创 Post 方式请求 Nginx 返回413状态码

Syntax client_max_body_size size; Default client_max_body_size 1m; Context http, server, location 设置客户端请求主体的最大允许大小,在“Content-Length”请求头字段中指定。如果请求中的大小超过配置的值,则将413(请求实体太大)错误返回给客户机。请注意浏览器无...

2020-10-24 21:38:11 1819

原创 查看 hdfs 上文件的文件状态、所属块信息等

执行 hdfs fsck 可以得到如下帮助信息:Usage: hdfs fsck <path> [-list-corruptfileblocks | [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]] [-includeSnapshots] [-storagepolicies] [-blockId <blk_Id>] <path> start che

2020-10-24 21:35:38 2302

原创 HBase Compaction

文章目录1. Compaction1.1. 基本原理1.2. Compaction 的核心作用1.3. Compaction 基本流程1.3.1. Compaction 触发时机1.3.2. 待合并 HFile 集合选择策略1. CompactionCompaction是以Store为单位进行的Compaction使读取延迟更加稳定,但是读取时间产生了很大的毛刺Compaction 操作的主要源头来自flush操作根据待合并HFile文件的选择策略可以得知,正在进行Compaction的HFi

2020-10-21 23:59:12 2001 1

原创 RegionServer 宕机恢复流程

根据上节的基本原理,本节介绍HBase故障恢复的具体流程,重点讨论RegionServer的宕机恢复。Master检测RegionServer宕机HBase使用ZooKeeper协助Master检测RegionServer宕机。所有RegionServer在启动之后都会在ZooKeeper节点/rs上注册一个子节点,这种子节点的类型为临时节点(ephemeral)。临时节点的意义是,一旦连...

2020-10-21 23:55:47 1091 1

原创 HBase故障恢复基本原理

Master故障恢复原理在HBase体系结构中,Master主要负责实现集群的负载均衡和读写调度,并没有直接参与用户的请求,所以整体负载并不很高。HBase采用基本的热备方式来实现Master高可用。通常情况下要求集群中至少启动两个Master进程,进程启动之后会到ZooKeeper上的Master节点进行注册,注册成功后会成为ActiveMaster,其他在Master节点未注册成功的进...

2020-10-21 23:54:56 932 1

原创 SparkSession 相关类

文章目录1. SparkSession相关类1.1. DataType1.2. Metadata1.3. StructType与StructField1.3.1. StructField类定义1.3.2. StructType类定义1.4. 数据源DataSource1.4.1. DataSource详解1.4.2. DataSourceRegister详解1.5. 数据集合DataSet1.5.1. 属性和方法1.6. DataFrameReader详解1.6.1. 属性和方法1.7. SparkSess

2020-10-15 00:14:45 541

原创 Spark 配置

文章目录1. Spark 配置1.1. Spark 属性1.1.1. 动态加载Spark属性1.1.2. 查看Spark属性1.2. 环境变量1. Spark 配置Spark提供了三个位置来配置系统:Spark属性控制大多数应用程序参数,可以通过使用SparkConf对象、bin/spark-submit脚本选项、conf/Spark-default.conf文件或通过Java系统属性进行设置。环境变量可用于通过每个节点上的conf/spark-env.sh脚本设置每台机器的设置,例如IP地址。

2020-10-14 22:17:11 885

原创 Spark 核心原理

文章目录1. Spark核心原理2. 消息通信原理2.1. Spark运行时消息通信1. Spark核心原理Application(应用程序):是指用户编写的spark应用程序,包含驱动程序(driver)和分布在集群中多个节点上运行的Executor代码,在执行过程中有一个或多个作业组成。Driver(驱动程序):Spark中的Driver,即运行上述Application的main函数并且创建SparkContext,其中创建SparkContext的目的是为了准备Spark应用程序的运

2020-10-13 23:14:21 1239 1

原创 Broker 和 Controller

文章目录1. Broker 和 Controller1.1. 集群管理1.2. Controller1.2.1. Controller 选举原理1.2.2. 手动触发 Controller 开启新一轮选举1.2.3. Partition 的 leader 选举2. broker 端配置2.1. 最基本的配置2.2. 主要的参数配置1. Broker 和 Controller对用户而言,broker的主要功能就是持久化消息以及将消息队列中的消息从发送端传输到消费端。Kafka的broker负责持久化pro

2020-10-09 22:58:09 508 1

原创 Kafka Producer

文章目录1. Kafka Producer1.1. Producer概览1.2. ProducerRecord1.3. RecordMetadata1.4. 发送消息1.4.1. 工作流程2. 参数配置2.1. 必填参数2.2. 其他参数1. Kafka Producer在0.9.0.0版本中,社区正式使用Java版本的producer替换了原Scala版本的producer。新版本的producer的主要入口类是org.apache.kafka.clients.producer.KafkaProduc

2020-10-09 22:27:32 328

原创 Linux 中的硬盘

硬盘概念硬盘设备是由大量的“扇区”组成的,单个扇区容量为512字节,第一个扇区保存着主引导记录和分区信息,主引导记录需要占用446字节,分区表占用64字节,结束标记占用2字节。当我们拿到一张大白纸,首先为了使用方便要裁剪,然后为了书写工整要划格。“白纸”表示原始的硬盘,“裁剪”意味着分区,“画格”意味着格式化,最后写入数据,即新安装一块硬盘设备后,为了更充分、安全的利用硬盘空间首先要进行分区,然后格式化,最后挂载使用。硬盘被划分为:主分区(必须有一个)、扩展分区(可以没有,但最多一个)和逻辑分

2020-09-21 11:55:37 1110

原创 HBase MemStore

文章目录MemStore设计MemStore的原因Memstore Flush触发条件MemStoreHBase中,Region是集群节点上最小的数据服务单元,用户数据表由一个或多个Region组成。在Region中每个ColumnFamily的数据组成一个Store。每个Store由一个Memstore和多个HFile组成(如果一次flush都还没有发生的话,就是0个HFile)。HFile是由Memstore flush产生的,每一次的flush都会产生一个全新的HFile文件。设计MemSto

2020-09-16 09:10:47 1342

原创 HBase 读取流程

文章目录1. HBase 读取流程1.1. Client-Server读取交互逻辑1.2. Server端Scan框架体系1.2.1. 构建scanner iterator体系1.2.2. 执行next函数获取KeyValue并对其进行条件过滤1.3. 过滤淘汰不符合查询条件的HFile1.4. 从HFile中读取待查找Key1. HBase 读取流程HBase读数据的流程更加复杂。主要基于两个方面的原因:一是因为HBase一次范围查询可能会涉及多个Region、多块缓存甚至多个数据存储文件;二是

2020-09-13 23:11:48 479

转载 HBase 行级事务模型

文章目录1. HBase 行级事务模型1.1. HBase事务原子性保证1.2. 写写并发控制1.2.1. 如何实现写写并发控制?1.2.2. 如何实现批量写入多行的写写并发?1.3. 读写并发控制1.3.1. 如何实现读写并发控制?1. HBase 行级事务模型HBase目前只支持行级事务1.1. HBase事务原子性保证HBase数据会首先写入WAL,再写入Memstore。写入Memstore异常很容易可以回滚,因此保证写入/更新原子性只需要保证写入WAL的原子性即可。1.2. 写写并发控制

2020-09-13 18:13:14 490

转载 Hbase 的 sequenceId

文章目录1. Hbase 的 sequenceId1.1. 为什么需要sequenceId1.2. HLog日志核心结构1.3. 什么是sequenceid?1. Hbase 的 sequenceId1.1. 为什么需要sequenceIdHBase数据在写入的时候首先追加写入HLog,再写入Memstore,也就是说一份数据会以两种不同的形式存在于两个地方。那两个地方的同一份数据需不需要一种机制将两者关联起来?Memstore中的数据flush到HDFS文件中后HLog对应的数据是不是就可以被删

2020-09-13 18:06:24 450

原创 HBase 写入流程

文章目录HBase 写入流程Region写入阶段HBase 写入流程HBase写入流程整理分为3个阶段:客户端处理阶段Region写入阶段MemStore Flush阶段注意:用户写入请求在完成MemStore的写入后就会返回成功,MemStore Flush是一个异步执行过程。Region写入阶段...

2020-09-13 18:03:49 2257

原创 Region 分裂策略补充

文章目录Region分裂策略补充KeyPrefixRegionSplitPolicyDelimitedKeyPrefixRegionSplitPolicyDisabledRegionSplitPolicyRegion分裂策略补充Region分裂详见参见Region 分裂KeyPrefixRegionSplitPolicy除了简单粗暴地根据大小来拆分,还可以自己定义拆分点。 KeyPrefixRegionSplitPolicy 是 IncreasingToUpperBoundRegionSplitP

2020-09-12 17:25:36 478

原创 类加载器(1)

文章目录1. 类加载器1.1. 类加载机制1.2. 类加载器加载Class的步骤1. 类加载器类加载器负责将.class文件加载到内存,并为之生成对应的java.lang.Class对象。类加载器负责加载所有的类,系统为所有被加载进内存的类生成一个java.lang.Class实例。一旦一个类被加载进JVM中,同一个类就不会被再次载入了。正如一个对象有一个唯一的标识一样,一个载入JVM的类也有一个唯一的标识。在Java中,一个类用其类的全限定类名(包名+类名)作为唯一标识,但在JVM中,一个类

2020-08-29 21:14:41 137

原创 枚举类需要注意的点

文章目录1. 枚举类1.1. 枚举类和普通类的区别1.2. 枚举类中的方法1.3. 枚举类实现接口1.4. 包含抽象方法的枚举类1. 枚举类枚举类是一种特殊的类:可以有自己的成员变量、方法可以实现一个或者多个接口可以定义自己的构造器1.1. 枚举类和普通类的区别枚举类可以实现一个或多个接口,使用 enum 定义的枚举类默认继承了 java.lang.Enum 类,而不是 Object 类,因此枚举类不能显示继承其他父类。其中 java.lang.Enum 类实现了 java.io.Se

2020-08-28 19:01:33 854

原创 最简单的死锁示例

public class DeadLockDemo { public void method1() { synchronized (String.class) { System.out.println("method1 lock1……"); synchronized (Integer.class) { System.out.println("method1 lock2……"); }

2020-08-23 19:11:14 470

空空如也

空空如也

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

TA关注的人

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