<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[星空的风fly]]></title><description><![CDATA[知识的分享更能激荡出不一样的火花]]></description><link>https://blog.youkuaiyun.com/lzxlfly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lzxlfly]]></copyright><item><title><![CDATA[Hive中生成自增序列的常用方法]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/133627240</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/133627240</guid><author>lzxlfly</author><pubDate>Sat, 07 Oct 2023 01:47:53 +0800</pubDate><description><![CDATA[在日常业务开发过程中，通常遇到需要hive数据表中生成一列唯一ID，当然连续递增的更好。最近在结算业务中，需要在hive表中生成一列连续且唯一的账单ID，于是就了解生成唯一ID的方法]]></description><category></category></item><item><title><![CDATA[解决MySQL datetime类型时间毫秒四舍五入问题]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/128310079</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/128310079</guid><author>lzxlfly</author><pubDate>Wed, 14 Dec 2022 01:08:28 +0800</pubDate><description><![CDATA[后来上网查询到，Mysql自动将datetime类型的毫秒数四舍五入，上边代码我获取到最大日期是2023-01-31 23:59:59.999，只是没有显示毫秒而已，四舍五入就会将9进位，从而变成下一月开始时间2023-02-01 00:00:00.0。因此，我们可以做一个判断，决定是否要获取最后一秒的最大毫秒999，LocalTime.MAX获取到最大值是带999毫秒的，我们设置减去999毫秒，这样毫秒就为0了，到MySQL就不会进位了。]]></description><category></category></item><item><title><![CDATA[解决Elasticsearch Connection reset by peer异常]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/128234591</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/128234591</guid><author>lzxlfly</author><pubDate>Thu, 08 Dec 2022 14:59:56 +0800</pubDate><description><![CDATA[随着ES的密集使用，线上环境，不同应用最近几天陆续有报java.io.IOException: Connection reset by peer异常，感觉不太正常。直接影响就是用户查询或者变更ES数据失败。]]></description><category></category></item><item><title><![CDATA[Spark中常用的聚合算子说明及使用]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127956825</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127956825</guid><author>lzxlfly</author><pubDate>Fri, 02 Dec 2022 02:07:06 +0800</pubDate><description><![CDATA[spark常用聚合算子groupByKey、reduceByKey、aggregateByKey、foldByKey、combineByKey的基本使用及区别]]></description><category></category></item><item><title><![CDATA[ElasticSearch常见避坑指南]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/128029656</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/128029656</guid><author>lzxlfly</author><pubDate>Sun, 27 Nov 2022 01:08:07 +0800</pubDate><description><![CDATA[在es中query查询如果不指定from-size值，es默认from=0，size=10，默认一次查询10条数据如下查询语句，11个唯一id查询，如果不指定from，size，只返回10条数据，而不是11条所以正确的查询是加上from=0，size=11，即指定预期的size。]]></description><category></category></item><item><title><![CDATA[Elasticsearch之join关联查询]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127925375</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127925375</guid><author>lzxlfly</author><pubDate>Sat, 19 Nov 2022 22:48:10 +0800</pubDate><description><![CDATA[Elasticsearch提供了类似于SQL JOIN的关联查询，通过has_child/has_parent可以实现一对多关系的父子表数据查询。但是其损耗也是比较大的，在使用的时候要根据分片数量的多少和预估数量量级的大小，提前做好性能测试]]></description><category></category></item><item><title><![CDATA[什么是shuffle？shuffle的原理及过程]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127761697</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127761697</guid><author>lzxlfly</author><pubDate>Tue, 15 Nov 2022 22:20:23 +0800</pubDate><description><![CDATA[首先，我们给 Shuffle 下了一个明确的定义，在分布式计算场景中，Shuffle 指的是集群范围内跨节点、跨进程的数据分发。我们在最开始提到，Shuffle 的计算会消耗所有类型的硬件资源。具体来说，Shuffle 中的哈希与排序操作会大量消耗 CPU，而 Shuffle Write 生成中间文件的过程，会消耗宝贵的内存资源与磁盘 I/O，最后，Shuffle Read 阶段的数据拉取会引入大量的网络 I/O。不难发现，Shuffle 是资源密集型计算，因此理解 Shuffle 对开发者来说至关重要。]]></description><category></category></item><item><title><![CDATA[Spark转换、执行、shuffle等常用算子归类]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127761454</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127761454</guid><author>lzxlfly</author><pubDate>Wed, 09 Nov 2022 00:31:09 +0800</pubDate><description><![CDATA[map、mapPartitions、mapPartitionsWithIndexfilterflatMapunion、intersection、joincogroup、cartesiancoalescerepartition、repartitionAndSortWithinPartitions
			 groupByKey、sortByKeyreduceByKey、aggregateByKeycollect、first、taketakeSample、takeOrderedsaveAsTextFile、sav]]></description><category></category></item><item><title><![CDATA[Spark调度核心组件之三剑客]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127718335</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127718335</guid><author>lzxlfly</author><pubDate>Sun, 06 Nov 2022 23:51:29 +0800</pubDate><description><![CDATA[DAGScheduler核心职责，是把计算图 DAG 拆分为执行阶段 Stages，Stages 指的是不同的运行阶段，同时还要负责把 Stages 转化为任务集合 TaskSets，也就是把“建筑图纸”转化成可执行、可操作的“建筑项目”。以 Actions 算子为起点，从后向前回溯 DAG，以 Shuffle 操作为边界去划分 Stages。]]></description><category></category></item><item><title><![CDATA[vue2项目中自定义的js文件使用$router无效]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127680950</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127680950</guid><author>lzxlfly</author><pubDate>Fri, 04 Nov 2022 00:43:46 +0800</pubDate><description><![CDATA[vue项目中，我们经常会在在外部文件中使用router做一些拦截、跳转之类工作，但是这时候使用this.$router是无效的，undefined的。就是this的没有指向，也是undefined的，this中就自然没有$router。不比.vue结尾的组件文件，最终都会被注册到main.js中，而main.js中我们一般已经导入了index.js中创建的VueRouter对象，所有vue结尾的文件使用也就自然生效。如下图，鼠标点击，显示链接到了在index.js中VueRouter对象。]]></description><category></category></item><item><title><![CDATA[junit单元测试mock常用写法-springboot与springmvc]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127602342</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127602342</guid><author>lzxlfly</author><pubDate>Mon, 31 Oct 2022 01:04:57 +0800</pubDate><description><![CDATA[做单元测试时候，经常会mock一些方法，得到期望的返回值，这里记录一下常见的public、private、static方法，以及设计到的内部调用的方法。]]></description><category></category></item><item><title><![CDATA[Elasticsearch按某个字段去重-实现group by效果]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127407926</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127407926</guid><author>lzxlfly</author><pubDate>Thu, 20 Oct 2022 01:53:58 +0800</pubDate><description><![CDATA[Elasticsearch按某个字段去重-实现group by或distinct效果]]></description><category></category></item><item><title><![CDATA[Elasticsearch查询must与should不能同层级使用]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/127380031</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/127380031</guid><author>lzxlfly</author><pubDate>Tue, 18 Oct 2022 01:03:53 +0800</pubDate><description><![CDATA[当must下的条件都满足的时候，查询结果发现没有满足should下的任何一个条件的数据也包含在结果集内，should好像最小匹配了，变得可有可无了，should失效了。这显然不是我们想要的查询结果。显然must和should不能在同一个层级使用，should必须放在must的内层且用bool包括起来。也就是一山不容二虎，要么去掉，要么被收编。must和should同时使用，如下例子。]]></description><category></category></item><item><title><![CDATA[junit单元测试mock私有private方法和静态static方法]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/126911994</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/126911994</guid><author>lzxlfly</author><pubDate>Sat, 17 Sep 2022 23:06:33 +0800</pubDate><description><![CDATA[org.powermock.api.mockito.PowerMockito更强大，支持private和protected方法的mock。org.mockito.Mockito功能有限，不能mock 私有private、受保护的protected方法。利用PowerMockito来mock私有方法需要mock。]]></description><category></category></item><item><title><![CDATA[ElasticSearch深浅分页查询及原理]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/125466213</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/125466213</guid><author>lzxlfly</author><pubDate>Mon, 27 Jun 2022 02:43:14 +0800</pubDate><description><![CDATA[假设有8分片，查询到第1000页数据，from =1000 size=100，es每次会从取出每个分片取1000*100+100=11w条数据，自然每个分片都会存储这11w条数据，然后再发给协调节点做排序后，而协调节点就是面临处理8*11w=88w条的巨大压力随着from页码的不断增加，es从每个分片获取的数据量也就越来越大，自然越来越慢，于es所在服务器和应用系统都带来不小压力，甚至出现内存溢出风险。因此es默认使用10000作为最大查询值，超过此值，推荐使用scroll游标来滚动查询。如果初次使用，不注]]></description><category></category></item><item><title><![CDATA[hive中排序函数row_number、rank、dense_rank的区别]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/124890855</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/124890855</guid><author>lzxlfly</author><pubDate>Fri, 20 May 2022 22:47:57 +0800</pubDate><description><![CDATA[row_number 排序字段值相同时，序号不同，下一个序号顺序自增
rank        排序字段值相同时，序号相同，下一个序号跳跃自增
dense_rank排序字段值相同时，序号相同，下一个序号顺序自增]]></description><category></category></item><item><title><![CDATA[如何处理Spark数据倾斜]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/123784397</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/123784397</guid><author>lzxlfly</author><pubDate>Mon, 04 Apr 2022 00:22:45 +0800</pubDate><description><![CDATA[一、什么是数据倾斜

在分布式集群计算中，数据计算时候数据在各个节点分布不均衡，某一个或几个节点集中80%数据，而其它节点集中20%甚至更少数据，出现了数据计算负载不均衡的现象。

数据倾斜在MR编程模型中是十分常见的，用最通俗的话来讲，数据倾斜就是大量的相同key被分配到一个partition里，而其它partition被分配了少量的数据。这时候我们就认为是数据倾斜了

二、数据倾斜的影响

造成了“少数人累死，多数人闲死”的情况,这种情况是我们不能接受的，这也违背了分布式计算的初衷。集群中一个或几个节点]]></description><category></category></item><item><title><![CDATA[Spark核心概念释义及基本运行流程]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/123674522</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/123674522</guid><author>lzxlfly</author><pubDate>Sun, 27 Mar 2022 23:06:03 +0800</pubDate><description><![CDATA[一个application包括driver program和executors，一个application应用可以有多个job组成，一个action算子对应一个job，一般而言，程序中有几个action算子就会产生几个job。一个job可以由多个stage组成，一个stage对应多个task，task由dirver发送到各个executor，task运行在executor中，exector以并行的方式执行task。每个Executor独占一个Container]]></description><category></category></item><item><title><![CDATA[Spark中累加器的应用及场景]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/123604181</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/123604181</guid><author>lzxlfly</author><pubDate>Sun, 20 Mar 2022 01:29:20 +0800</pubDate><description><![CDATA[一、什么是累加器

累加器（Accumulators）与广播变量（Broadcast Variables）共同作为Spark提供的两大共享变量，主要用于跨集群的数据节点之间的数据共享，突破数据在集群各个executor不能共享问题。

而累加器主要定义在driver节点，在executor节点进行操作，最后在driver节点聚合结果做进一步的处理。

二、常见的累加器

Spark提供了三种常见的累加器，分别是LongAccumulator(参数支持Integer、Long)、DoubleAccumulat]]></description><category></category></item><item><title><![CDATA[记一次Spark引擎执行Sql超时优化]]></title><link>https://blog.youkuaiyun.com/lzxlfly/article/details/123037050</link><guid>https://blog.youkuaiyun.com/lzxlfly/article/details/123037050</guid><author>lzxlfly</author><pubDate>Tue, 22 Feb 2022 22:22:10 +0800</pubDate><description><![CDATA[前几天用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]]></description><category></category></item></channel></rss>