自定义博客皮肤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_sky333的博客

网络笔记本

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

原创 JVM内存模型

jvm内存模型

2022-03-27 17:53:32 1639

原创 UDF函数开发中的坑

hive中udf函数遇到的问题和处理方式

2022-03-23 14:18:44 2867

原创 管报数仓规则匹配任务优化

优化前:sql逻辑不复杂,只是中间用到了一个udtf函数,函数处理逻辑非常复杂,先付一张sql图这里涉及到大表join小表,所以采用了mapjoin,去掉reduce过程,然后重新定义文件数量,让多个map去并行。关键点在于udtf函数逻辑过于复杂,而且传入的拼接字段,每个月会有4万左右数据,拼接后的字符串相同,这样就会导致这些数据进了同一个map,同时由于udtf逻辑复杂,所以这两个map会一直跑,由此出现了map端的数据倾斜。运行时长在90分总以上,由于等不了,就停了,没有具体看过多久执行完

2021-08-19 17:49:18 155

原创 管报报表优化

优化前:代驾管报分为代驾,新桔,代物流和代保养这几块内容。sql第一阶段先把三块日报数据放到表中,第二阶段依赖第一阶段结果作出符合指标,依次insert into进去,第三阶段将三部分统一作出钆差放到表中。在这个场景下,随着复合指标越来越多,insert into部分达到近50个,jvm频繁开启,导致任务运行时长过长,最后运行时间短的话80分钟,长的话120分钟。优化方式:这种场景下,无关乎数据倾斜,文件数等因素,所以参数优化已然不适用,所以采用sql逻辑优化,因为这个里面分为三部分,所以将三部分内

2021-08-19 17:46:42 444

原创 打标签任务优化

优化前:sql比较简单,表中数据是700万左右,就是查出某个表的数据,放到另一个表,但是中间用到了一个udtf函数,关键在于函数逻辑复杂。之前由于没有做优化,所以硬跑下来,耗时85分钟左右,日志没有数据倾斜现象。时间过去太久,运行图已经覆盖没有了,这里就不放了优化方式:因为数据量不是很大,也没有数据倾斜,而且从运行日志中可以看出没有reduce过程,所以就关注了map,发现只开启了2个map,然后怀疑是因为map太少了,处理数据条数太多,所以就把参数设置的小一点,从而使map数增加到了15,相当于15个并行

2021-08-19 17:44:01 57

原创 发送邮件任务优化

优化前:通过一个任务来发送,遍历邮件id,顺序执行,一共发送40封左右的邮件,总耗时160~200分钟左右优化方式:在shell脚本中将发邮件任务做多线程并发处理,让每封邮件并发去执行,等到所有邮件发送完成,该任务返回成功,但是由于平台单个任务默认内存最大为4G,所以需要将邮件拆成3个任务来完成,否则会出现内存不足的情况优化后:通过三个任务并发处理,无序执行,总耗时30分钟之内...

2021-08-19 17:42:04 181

原创 mapjoin

背景:有一段sql,A left join B,查出的结果再 left join C,A表5亿条数据,B表2条,C表16条现象:用spark直接跑发生数据倾斜,55分钟没有跑出来,就把任务停了解决过程:由于确定是数据倾斜引起的,然后这三个表的数据量有个大概了解,所以直接采取mapjoin,先切换成hive,然后加入mapjoin的参数,小表阈值设置为20兆,结果运行时间缩短至10分钟。...

2021-08-19 17:37:15 58

原创 检查重复数据shell公共脚本

#!/bin/bashcd $(cd $(dirname $0); pwd)set -esource ~/env.shrunday=$(date -d "-1 days" +"%Y-%m-%d")table_name=""check_partition=""check_partition2=""table_name_tmp=$1check_partition_tmp=$2check_partition_tmp2=$3#获取要检查的表名if [[ "${table_name_tmp:.

2020-10-30 14:43:23 395

原创 hadoop相关知识简单介绍

一、背景:Google首先遇到的大数据存储、计算、搜索问题,在解决这些问题的过程中,发表了GFS、Map-Reduce、Bigtable三篇论文。为后来的大数据提供参考和思想。二、hadoop组件构成hdfs:分布式文件存储系统MapReduce:分布式计算处理框架yarn:资源调度三、hadoop2.0时期架构图四、各个组件部分介绍(这里只介绍hdfs,MapReduce,yarn,至于其他相关组件,详细可以参考我的其他针对模块)1.HDFS:简述:分布式文件存储系

2020-06-21 19:38:20 297

原创 MapReduce原理及shuffle机制

一、环形缓冲区1.数据在环形缓冲区以KV的形式存在,索引和数据同向增长,当增长到缓冲区大小(默认128M)的80%时(只是80%左右,不是必须80%)开始溢写2.索引占用四个int长度,以一个四元组的形式存在:value的起始位置,key的起始位置,partition值,value的长度。每进一条数据,指针每次向下跳动4个格子,然后补齐上面的值3.发生在环形缓冲区的排序是对索引的排序,再具体是对partition值和key进行排序,将相同的partition放到一起,同一个partition内按

2020-06-21 19:38:07 432 1

原创 HDFS读写流程及涉及的原理

一、HDFS的读数据流程流程概述:1.客户端会先创建distributedfilesystem向namenode发出下载文件的请求2.namenode返回目标文件的元数据信息3.客户端通过FSDataInputStream向DataNode1和DataNode2读取数据4.数据回传。5和6过程同3和4。然后客户端关闭流注:客户端读取数据由于带宽所限,采取就近原则。本地DataNode,距离最近>>>>>>>>>如果没有,取同机

2020-06-21 16:46:40 466

原创 hive相关综合知识点汇总

一、视图:视图中保留有原表的元数据信息,但是不会保留数据,当我们查询视图的数据的时候,可以查到,但是当我们查询真正数据的时候,这是后才会去执行建立视图的时候的SQL语句。例如:表A为执行建立视图语句:create view A_view as select * from A where dt = 2020/6/13那么当我们执行descA_view的时候,会看到id,name这两列,当我们去执行select * fromA_view 的时候,才会真正去执行select * fromA ...

2020-06-14 17:25:01 139

原创 hivesql相关优化

1.需要做去重后count 的操作,尽量使用group by代替distinct,distinct 是去重,会将所有的key都放到一个reducer里面去做处理,所以如果数据量大,不合理。group by 是分组操作,会将不同的key去进行分组,然后进入多个reducer里面去执行,最后再count,所以效率会更高,且能达到去重的效果2.在条件允许的情况下尽量使用limit来限制查询的条数,如果是在服务器或者是web查询时,诗句量过大会直接导致heap不足而报错3.尽量减少一个表多次查询,小表放前,

2020-06-14 15:25:24 223

原创 hive中的数据倾斜及解决方案

一、原因:1.key的null和空值数量过多,这些都被分到一个reduce中去处理,导致某一个或几个reduce的任务要远大于平均值2.key的值分布不均匀,某一个或者多个key相同的数据量过大(有些情况是由业务本身的特性决定的)3.SQL语句不合理二、现象:在运行日志里面可以明显看出,任务执行进度一直维持在99%,由于某一个或几个reduce处理的数据量过大且资源无法平均,所以会大大拖慢查询速度。三、解决方法:1.开启预聚合MRhive.map.aggr = trueh

2020-06-14 14:24:08 355

原创 hive CLI、hwi、beeline、hiveserver、hiveserver2之间的关系

一、hiveserver和hiveserver2概述:这两个都是hive的一个服务,为了给外部的应用提供一个访问hive的通道。hiveserver2是hiveserver的一个升级版,由于hiveserver不能处理多于一个客户端的并发请求,并且无法通过修改hiveserver源码来实现,所以在0.11版本上,做了hiverserver2,更有利于开放API客户端,如JDBC更友好的支持二、hiveCLI概述:这个是客户端操作,直接在安装hive的节点上执行命令,bin/hive,hive -

2020-06-14 12:26:58 1546

原创 hive相关知识简单介绍

一、hive概述hive基于Hadoop,本质就是MR,数据以结构化的方式存储在hdfs上,通过hive以表的形式来展示数据,通过hivesql来对数据进行查询分析二、

2020-06-07 16:56:51 351

原创 hive参数配置列表

注:该列表很多都用不到,如想查看作用,直接搜索即可。hive.exec.mode.local.auto=true决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行)cal.auto.inputbytes.max=134217728L如果 hive.exec.mode.local.auto 为 true,当输入文件大小小于此阈值时可以自动在本地模式运行,默认是 128兆。hive.exec.mode.local.auto.tasks.max=4如果 hive.exe

2020-06-07 16:49:03 557

原创 HashMap集合源码以及底层结构解析(何时数组+单项链表变为数组+红黑二叉树)

当开始创建集合时,调用构造器,此时会对加载因子初始化当首次调用put方法添加元素时*注意:这里的hash值不是原始值返回的,而是算出key的hash值后和0无符号右移16位后的值进行异或运算*然后进入resize方法到这里resize方法就对table进行了初始化,容量16,临界值12在后面的添加过程中,可能会用到下面else里面的添加方法,这里就不细说了,可以简单看下,然后记住后面的小结部分内容...

2018-03-17 00:20:05 1247

原创 ArrayList集合底层源代码展示以及结构解析,扩容机制

ArrayList初始长度为0(这里以jdk1.8为例),是一个Object类型的空数组,如下当第一次调用add后,长度变为10当数组首次扩容的10个空间用完需要扩容后,会第二次走grow方法来扩容...

2018-03-15 23:31:16 309

原创 MySQL主从复制配置流程(win7环境,Linux虚拟机结合简单测试演示)

先说一下,这篇文章只是利用虚拟机做的一个小测试演练,一般初入职场的新人基本不会碰到到,但是有个别新人问到我了,就简单来做个例子:准备:条件有限,以windows和linux虚拟机为例,让Windows下的MySQL作为主机,Linux下的MySQL作为从机,两个MySQL的版本要一致,配置内容都放在【mysqld】节点下。第一步:在Windows下找到MySQL里面的my.ini文件,修改里面的参...

2018-03-15 23:16:29 267

原创 在eclipse中WebService服务接口调用方法

第一步:下载apache-cxf压缩包,解压后生成一个文件,记住文件路径第二步:进入http://www.webxml.com.cn/zh_cn/index.aspx网站查找自己需要的服务,打开服务找到帮助文档,选择以wsdl结尾的地址复制到浏览器(以天气预报为例)第三步:打开后点击右键,产看网页源代码第四步:将整个源代码复制并粘贴到文本编辑器,然后将里面的<s:elementref="s:...

2018-03-12 23:08:16 4079

原创 Linux下Redis主从复制的配置方法(测试方法)

第一步:确定自己安装的redis中的redis.conf文件配置如下第二步:创建多个.conf文件用作主机和从机,文件内容如下,文件内容数字部分与文件名数字部分保持一致第三步:三个全开后,此时都是主机(master),需要手动配置从机(配从不配主)第四步:进入对应的从机,执行“slaveof +主机ip+主机端口号”,此时就成为了主机的从机,没有写入的功能,只可以读主机写入的内容。手动取消从机执行...

2018-03-12 23:02:47 408

原创 Linux中Redis3.5版本后官方给出的集群搭建方式

第一步:安装ruby环境,执行在安装光盘下的Package目录(/media/CentOS_6.8_Final/Packages)下的rpm:• 执行rpm -ivhcompat-readline5-5.2-17.1.el6.x86_64.rpm • 执行rpm -ivhruby-libs-1.8.7.374-4.el6_6.x86_64.rpm • 执行rpm -ivhruby-1.8.7.37...

2018-03-12 22:59:32 460

原创 负载均衡器(nginx)在Linux系统中的安装配置文件相关修改

准备:pcre-8.37.tar.gz、openssl-1.0.1t.tar.gz、zlib-1.2.8.tar.gz、nginx-1.11.1.tar.gz放到/opt目录下。第一步:(.安装pcre)在/opt目录下解压缩pcre-xx.tar.gz包进入解压缩目录,执行./configure(如果有提示信息,需要提前安装gcc++),方法分为有网和无网,联网:yum install gcc-...

2018-03-12 22:50:42 187

原创 maven环境搭建以、在eclipse中如何配置、maven库遇到问题解决方法

第一步:需检查JAVA_HOME环境变量是否配置成功,在dos窗口下执行此命令,看是否返回JDK,如果没有,则需重新配JAVA_HOME并放到path路径中第二步:将Maven软件解压缩后的bin目录配置到path环境变量中,然后在dos窗口下执行mvn –v这个命令,返回如下即可第三步:修改资源仓库位置,打开Maven解压目录\conf\settings.xml文件在根节点下增加<loca...

2018-03-12 22:29:10 274

原创 debug断点调试在eclipse中F5进不去问题的解决办法

2018-03-11 15:13:05 2698 4

实际开发应用实例,包含读取hive,MySQL,文件三种方式的数据交互

包含读取hive,MySQL,文件三种方式的数据交互的udf函数,适用初高及数据研发人员在开发udf函数是作为参考,包括文件写入及读取方式,MySQL,hive等数据库连接可以直接将获取数据转为对象,便于后期开发达到复用目的。

2022-03-27

空空如也

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

TA关注的人

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