自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

星空的风fly

知识的分享更能激荡出不一样的火花

  • 博客(160)
  • 资源 (1)
  • 收藏
  • 关注

原创 Hive中生成自增序列的常用方法

在日常业务开发过程中,通常遇到需要hive数据表中生成一列唯一ID,当然连续递增的更好。最近在结算业务中,需要在hive表中生成一列连续且唯一的账单ID,于是就了解生成唯一ID的方法

2023-10-07 01:47:53 2379 1

原创 解决MySQL datetime类型时间毫秒四舍五入问题

后来上网查询到,Mysql自动将datetime类型的毫秒数四舍五入,上边代码我获取到最大日期是2023-01-31 23:59:59.999,只是没有显示毫秒而已,四舍五入就会将9进位,从而变成下一月开始时间2023-02-01 00:00:00.0。因此,我们可以做一个判断,决定是否要获取最后一秒的最大毫秒999,LocalTime.MAX获取到最大值是带999毫秒的,我们设置减去999毫秒,这样毫秒就为0了,到MySQL就不会进位了。

2022-12-14 01:08:28 2581 1

原创 解决Elasticsearch Connection reset by peer异常

随着ES的密集使用,线上环境,不同应用最近几天陆续有报java.io.IOException: Connection reset by peer异常,感觉不太正常。直接影响就是用户查询或者变更ES数据失败。

2022-12-08 14:59:56 6174 2

原创 Spark中常用的聚合算子说明及使用

spark常用聚合算子groupByKey、reduceByKey、aggregateByKey、foldByKey、combineByKey的基本使用及区别

2022-12-02 02:07:06 2186

原创 ElasticSearch常见避坑指南

在es中query查询如果不指定from-size值,es默认from=0,size=10,默认一次查询10条数据如下查询语句,11个唯一id查询,如果不指定from,size,只返回10条数据,而不是11条所以正确的查询是加上from=0,size=11,即指定预期的size。

2022-11-27 01:08:07 3406

原创 Elasticsearch之join关联查询

Elasticsearch提供了类似于SQL JOIN的关联查询,通过has_child/has_parent可以实现一对多关系的父子表数据查询。但是其损耗也是比较大的,在使用的时候要根据分片数量的多少和预估数量量级的大小,提前做好性能测试

2022-11-19 22:48:10 11839 3

原创 什么是shuffle?shuffle的原理及过程

首先,我们给 Shuffle 下了一个明确的定义,在分布式计算场景中,Shuffle 指的是集群范围内跨节点、跨进程的数据分发。我们在最开始提到,Shuffle 的计算会消耗所有类型的硬件资源。具体来说,Shuffle 中的哈希与排序操作会大量消耗 CPU,而 Shuffle Write 生成中间文件的过程,会消耗宝贵的内存资源与磁盘 I/O,最后,Shuffle Read 阶段的数据拉取会引入大量的网络 I/O。不难发现,Shuffle 是资源密集型计算,因此理解 Shuffle 对开发者来说至关重要。

2022-11-15 22:20:23 16596 1

原创 Spark转换、执行、shuffle等常用算子归类

map、mapPartitions、mapPartitionsWithIndexfilterflatMapunion、intersection、joincogroup、cartesiancoalescerepartition、repartitionAndSortWithinPartitions groupByKey、sortByKeyreduceByKey、aggregateByKeycollect、first、taketakeSample、takeOrderedsaveAsTextFile、sav

2022-11-09 00:31:09 652

原创 Spark调度核心组件之三剑客

DAGScheduler核心职责,是把计算图 DAG 拆分为执行阶段 Stages,Stages 指的是不同的运行阶段,同时还要负责把 Stages 转化为任务集合 TaskSets,也就是把“建筑图纸”转化成可执行、可操作的“建筑项目”。以 Actions 算子为起点,从后向前回溯 DAG,以 Shuffle 操作为边界去划分 Stages。

2022-11-06 23:51:29 874

原创 vue2项目中自定义的js文件使用$router无效

vue项目中,我们经常会在在外部文件中使用router做一些拦截、跳转之类工作,但是这时候使用this.$router是无效的,undefined的。就是this的没有指向,也是undefined的,this中就自然没有$router。不比.vue结尾的组件文件,最终都会被注册到main.js中,而main.js中我们一般已经导入了index.js中创建的VueRouter对象,所有vue结尾的文件使用也就自然生效。如下图,鼠标点击,显示链接到了在index.js中VueRouter对象。

2022-11-04 00:43:46 3216 2

原创 junit单元测试mock常用写法-springboot与springmvc

做单元测试时候,经常会mock一些方法,得到期望的返回值,这里记录一下常见的public、private、static方法,以及设计到的内部调用的方法。

2022-10-31 01:04:57 2400

原创 Elasticsearch按某个字段去重-实现group by效果

Elasticsearch按某个字段去重-实现group by或distinct效果

2022-10-20 01:53:58 2286 1

原创 Elasticsearch查询must与should不能同层级使用

当must下的条件都满足的时候,查询结果发现没有满足should下的任何一个条件的数据也包含在结果集内,should好像最小匹配了,变得可有可无了,should失效了。这显然不是我们想要的查询结果。显然must和should不能在同一个层级使用,should必须放在must的内层且用bool包括起来。也就是一山不容二虎,要么去掉,要么被收编。must和should同时使用,如下例子。

2022-10-18 01:03:53 2438 1

原创 junit单元测试mock私有private方法和静态static方法

org.powermock.api.mockito.PowerMockito更强大,支持private和protected方法的mock。org.mockito.Mockito功能有限,不能mock 私有private、受保护的protected方法。利用PowerMockito来mock私有方法需要mock。

2022-09-17 23:06:33 17515 1

原创 ElasticSearch深浅分页查询及原理

假设有8分片,查询到第1000页数据,from =1000 size=100,es每次会从取出每个分片取1000*100+100=11w条数据,自然每个分片都会存储这11w条数据,然后再发给协调节点做排序后,而协调节点就是面临处理8*11w=88w条的巨大压力随着from页码的不断增加,es从每个分片获取的数据量也就越来越大,自然越来越慢,于es所在服务器和应用系统都带来不小压力,甚至出现内存溢出风险。因此es默认使用10000作为最大查询值,超过此值,推荐使用scroll游标来滚动查询。如果初次使用,不注

2022-06-27 02:43:14 3258

原创 hive中排序函数row_number、rank、dense_rank的区别

row_number 排序字段值相同时,序号不同,下一个序号顺序自增rank 排序字段值相同时,序号相同,下一个序号跳跃自增dense_rank排序字段值相同时,序号相同,下一个序号顺序自增

2022-05-20 22:47:57 5571 1

原创 如何处理Spark数据倾斜

一、什么是数据倾斜在分布式集群计算中,数据计算时候数据在各个节点分布不均衡,某一个或几个节点集中80%数据,而其它节点集中20%甚至更少数据,出现了数据计算负载不均衡的现象。数据倾斜在MR编程模型中是十分常见的,用最通俗的话来讲,数据倾斜就是大量的相同key被分配到一个partition里,而其它partition被分配了少量的数据。这时候我们就认为是数据倾斜了二、数据倾斜的影响造成了“少数人累死,多数人闲死”的情况,这种情况是我们不能接受的,这也违背了分布式计算的初衷。集群中一个或几个节点

2022-04-04 00:22:45 7608

原创 Spark核心概念释义及基本运行流程

一个application包括driver program和executors,一个application应用可以有多个job组成,一个action算子对应一个job,一般而言,程序中有几个action算子就会产生几个job。一个job可以由多个stage组成,一个stage对应多个task,task由dirver发送到各个executor,task运行在executor中,exector以并行的方式执行task。每个Executor独占一个Container

2022-03-27 23:06:03 3429

原创 Spark中累加器的应用及场景

一、什么是累加器累加器(Accumulators)与广播变量(Broadcast Variables)共同作为Spark提供的两大共享变量,主要用于跨集群的数据节点之间的数据共享,突破数据在集群各个executor不能共享问题。而累加器主要定义在driver节点,在executor节点进行操作,最后在driver节点聚合结果做进一步的处理。二、常见的累加器Spark提供了三种常见的累加器,分别是LongAccumulator(参数支持Integer、Long)、DoubleAccumulat

2022-03-20 01:29:20 4098

原创 记一次Spark引擎执行Sql超时优化

前几天用spark引擎执行了一个较大的sql,涉及的表和数据量都不少,不同时间段执行了几次都超时,经过上网及分析,尝试解决了此问题,使用spark引擎测试几次大概都在半个小时左右完成,不再出现超时现象一、问题现象摘抄部分现场日志如下:2022-02-01 13:02:12 INFO 22/02/01 13:02:12 [dag-scheduler-event-loop] INFO DAGScheduler: ShuffleMapStage 28 (run at ThreadPoolExecuto

2022-02-22 22:22:10 6049

原创 hive表textfile格式与orc格式互转

ALTER TABLE dev.dev_yhzz_pop_bill SET FILEFORMAT INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'; ...

2021-11-23 00:15:00 4986 1

原创 Eclipse安装反编译插件Decompiler并设置生效

一、安装反编译插件Decompiler1、点击上方导航栏“Help”菜单,弹出“Eclipse Marketplace”并点击进入下载插件市场2、在搜索栏输入“Decompiler”,点击“Go”搜索,搜索结果第一项便是Decompiler,点击第一项右下角“Install”安装插件,这里显示“Installed”是已经安装过了。之后一路Next,统一协议,等待安装,安装完成后重启。3、安装完成重启后,打开“Preferences”菜单,在搜索栏,搜索decomplier,左侧菜单出..

2021-11-22 00:16:20 10515 1

原创 性能指标-qps、tps、tp99、并发用户数、响应时间理解

QPS(最大/最小/平均):Queries Per Secend,即每秒查询率,是一台服务器每秒能够响应的查询次数(一般指DB每秒执行的查询次数)。不能描述增删改,用其衡量系统性能具有一定局限性TPS(最大/最小/平均):Transactions Per Second,即每秒事务数,一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。从客户机发送第一个请求开始计时,到收到服务器响应结束计时,以此来计算使用的时间和完成的事务个数。具体事务的定义,都是人定的,但通常把一个接口的处理各种业务逻辑的

2021-07-26 22:31:15 3178

原创 MQ消息积压CPU打满导致不同服务接口超时异常

Not found future which msgId is 45 when receive response. May be this future have been removed because oftimeout

2021-07-22 20:57:05 1202 2

原创 Java字符串首字母大写高效方法

而我们通常会使用反射,通过对象获取其属性,并通过属性得到其getter、setter方法,而得到get、set方法时候需要属性首字母大写,而对象有可能几十个或者上百个属性。字符串首字母大写,我们通常的做法是:传统方法为先截取手字母,再转换为大写,然后在拼接,一个固然没事,但是上百个属性情况下对性能有一定影响。一种巧妙的方法就是通过字符的ASCII码值加减进行大小写转换计算机中大小写字母,ASCII码对照表从ASCII码对照表中国可以看出,大写字母与小写字母的ASCII值相差是32,.

2021-05-29 02:12:19 9378

原创 解决hive表新增的字段查询为空null问题

一、问题点有一个hive外部表,分区字段是tp和month,新增了几个字段fee_org_id,applied_date_time,pop_coop_mode_type_cd,fee_company后,insert overwrite重跑分区数据,SELECT * FROM app.app_yhzz_pop_bill_indicator_result WHERE tp = 'yt' AND month = '2021-04'用hive引擎查询如下,新增的几个字段是null而用prest

2021-05-14 14:30:05 3487 1

原创 由DUPLICATE引起的DeadlockLoserDataAccessException死锁

insert into student_sku (sku_id, sku_state, prom_id, prom_price, prom_state, start_time, end_time, create_time, update_time ) values (?, ?, ?, ?, ?, ?, ?, ?, ? ) ON DUPLICATE KEY UPDATE prom_id = ?, prom_price = ?, prom_state = ?, start_time = ?, en...

2021-04-25 00:12:22 6430

原创 git仓库整体回退到指定历史版本

1、查看历史版本git log2、本地回退到历史版本git reset --hard e377f60e28c8b84158回退之后,在eclipse或idea自带插件,会显示有远程仓库版本待pull(因为本地已经回退,远程仓库没有),这个时候不要pull,需要强制把本地回退的版本push到远程仓库3、强制push到远程仓库git push -f origin feature/20201120需要说明的是,强制push后,git远程仓库并不会记录我们本次..

2021-04-15 10:11:07 1163

原创 Elasticsearch排序出现No mapping found for [limit_time] in order to sort on错误

一、问题描述今天用Elasticsearch做排序时候报如下错误:No mapping found for [limit_time] in order to sort on大概意思是按limit_time排序时找不到该字段的映射类型如下图所示,查询21个分片,15个成功,6个失败,这样肯定达不到排序目的二、解决方案既然找不到映射类型(和es索引下的field是共用有关),那我们就指定其映射类型就好,这里limit_time类型为keyword,在排序时加上"unmapped_..

2021-02-28 01:46:21 19507 2

原创 ElasticSearch的term多条件与terms多值查询

一次查询多个字段,每个字段对应一个值。如查询条件属性plan_id、sku_id,值分别为:11、121、json请求格式如下。

2021-01-31 23:39:14 16919

原创 hive&presto日期与字符串转换

1、日期转字符串2、日期转时间戳hive:select unix_timestamp('2020-09-11 14:19:51','yyyy-MM-dd HH:mm:ss')presto:3、时间戳转日期hive:select from_unixtime(1599802509000,'yyyy-MM-dd HH:mm:ss')presto:select format_datetime(from_unixtime(1599802509),'yyyy-MM-dd HH:..

2021-01-10 02:49:03 29336

原创 Flink是如何管理内存的

在讲Flink管理内存之前要了解下Flink为什么要自己实现内存管理一、Flink为什么要自己实现内存管理在大数据领域,大多数数据相关的开源框架(Hadoop、Spark、Storm)都是基于JVM运行的,但是JVM的内存管理机制往往存在着诸多类似OutOfMemoryError的问题,主要是因为创建过多的对象实例而超过JVM的最大堆内存限制,却没有被有效回收掉,这在很大程度上影响了系统的稳定性,尤其对于大数据应用,面对大量的数据对象产生,仅仅靠JVM所提供的各种垃圾回收机制很难解决内存溢出的问题。

2020-12-31 23:58:14 2754 1

原创 Flink的TableAPI与SQL介绍和使用

Flink也提供了关系型编程接口TableAPI以及基于TableAPI的SQLAPI,让用户能够通过使用结构化编程接口高效地构建Flink应用。同时TableAPI以及SQL能够统一处理批量和实时计算业务,无须切换修改任何应用代码就能够基于同一套API编写流式应用和批量应用,从而达到真正意义的批流统一。在Flink1.8中,如果用户需要同时在流计算、批处理的场景下,用户需要两套业务代码,开发人员也需要维护两套技术栈,对于开发人员来说非常麻烦。Flink社区很早就设想过讲批处理看做是一个有界流数据, 讲

2020-11-29 22:46:40 864

原创 Flink中窗口的划分与应用

一、Window 分类1、数据集类型划分Flink根据上游数据集是否为KeyedStream类型,即是否使用keyBy(...),分为Keyed Window和Non-Keyed Window(1)KeyedWindow上游数据集如果是KeyedStream类型,即使用了keyBy(...),则调用DataStreamAPI的window()方法,数据会根据Key在不同的Task实例中并行分别计算,最后得出针对每个Key统计的结果。程序调用流程如下:stream ...

2020-10-06 01:51:45 1324

原创 Flink之DataStream的常用转换算子

1、Map [DataStream->DataStream](1)说明调用用户定义的MapFunction对DataStream[T]数据进行处理,形成新的Data-Stream[T],其中数据格式可能会发生变化,常用作对数据集内数据的清洗和转换。例如将输入数据集中的每个数值全部加 1 处理,并且将数据输出到下游数据集2、FlatMap [DataStream->DataStream](1)说明该算子主要应用处理输入一个元素产生一个或者多个元素的计算场景, 比较常见的是在

2020-10-05 00:49:13 1296

原创 Flink的数据持久化-CheckPoint机制

Flink内存易失,利用CheckPoint机制数据持久化,偏于出现异常,应用挂掉时,做数据恢复。所谓CheckPoint(可以理解为CheckPoint是把State数据持久化存储了)则表示了一个FlinkJob在一个特定时刻的一份全局状态快照,即包含了所有Task/Operator的状态。一、CheckPoint的原理Flink中基于异步轻量级的分布式快照技术提供了Checkpoints容错机制,分布式快照可以将同一时间点Task/Operator的状态数据全局统一快照处理,包括前面提到的Key

2020-10-02 01:39:20 5468 2

原创 Flink中基本的State类型介绍

我们知道,Flink是一个默认就有状态的分析引擎,为避免Task在处理过程中挂掉了,而导致内存中的数据丢失,Flink引入了State和CheckPoint机制,其中State就是Flink的一种基于内存的状态机制,Flink提供了两种基本的状态类型。一、基本状态Keyed State与Operator State1、Keyed StateKeyed State:顾名思义就是基于KeyedStream上的状态,这个状态是跟特定的Key绑定的。KeyedStream流上的每一个Key,都对应一个S

2020-09-20 01:10:31 5725 1

原创 Flink的时间语义Time与水位线WaterMark理解与使用

一、时间语义流式数据处理,最大的特点是数据上具有时间的属性特征,Flink 根据时间产生的位置不同,将时间分为三种时间语义Event Time:事件产生的时间,它通常由事件中的时间戳描述Ingestion Time:事件进入 Flink 的时间Processing Time:事件被处理时当前系统的时间在Flink中默认情况下使用是ProcessTime时间语义,如果用户选择使用EventTime或者IngestionTime语义,则需要在创建的StreamExecutionEnviron

2020-09-13 22:51:52 1479

原创 Flink中的侧输出流SideOutput使用场景

一、SideOutput流作用侧输出流有两个作用:(1)分隔过滤。充当filter算子功能,将源中的不同类型的数据做分割处理。因为使用filter 算子对数据源进行筛选分割的话,会造成数据流的多次复制,导致不必要的性能浪费(2)延时数据处理。在做对延时迟窗口计算时,对延时迟到的数据进行处理,即时数据迟到也不会造成丢失二、SideOutput使用示例@Dataclass OrderLog { private String orderId; private String skuI

2020-09-13 01:31:44 4023 8

原创 hive与presto解析json中的字段值

hive解析get_json_object语法:get_json_object(string json_string, string path)→ varcharpresto解析json_extract_scalar语法:json_extract_scalar(string json, string json_path) → varchar语法:json_extract(string json, string json_path) → json...

2020-09-12 19:10:45 21181

程序员面试秘籍.docx

阿里巴巴、京东、百度、腾讯、美团、今日头条等一线大厂历年面试题 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、等技术栈

2020-05-21

空空如也

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

TA关注的人

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