自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Enzo的探索之路

笔者将自己云笔记资料拿出来分享,希望可以与更多好友一起分享、学习新技术

  • 博客(49)
  • 收藏
  • 关注

原创 StringUtils提供的字符串处理方法

StringUtils作为处理字符串的工具类,为开发人员默认提供了多种字符串处理函数。本文针对springframework包下的StringUtils进行详细的方法测试,帮助大家加深对StringUtils工具类的了解。 /** * isEmpty()判断对象是否为空/空字符串 */ public static void isEmptyTest(){ ...

2020-02-28 08:56:06 1285

转载 java Optional类

类作用Optional作为处理空指针的类,主要用途是作为一种返回类型,在获得该类型的一个实例后,如果存在值,可以提取该值;如果不存在值,可以设置一个默认值。常用写法public class OptionalTest { /** * 测试Optional of()、ofNullable() */ private static void test1(){/...

2020-02-22 13:10:59 531

原创 gitignore忽略不需要提交的文件

进行项目开发时,有时很多文件并不需要提交到git仓库。为避免每次add提交时,显示很多的文件信息,采用如下方式自动忽略不需要提交的文件:1.使用ll -a查看文件目录[dhp@dhpMac]: ll -atotal 32drwxr-xr-x@ 10 dhp staff 320B 2 6 20:48 .drwx------+ 52 dhp staff 1.6K ...

2020-02-06 21:55:16 593

转载 解决if else多层嵌套问题

转载自公众号:码农沉思录,值得学习。写在前面不知大家有没遇到过像“横放着的金字塔”一样的if else嵌套:if (true) { if (true) { if (true) { if (true) { if (true) { if (true) { ...

2020-01-03 21:43:12 12369

原创 设计RPC框架应考虑的问题

最近面试遇到一个很好的问题,面试官说如何设计一个RPC框架,虽然自己在Hadoop中会用到RPC,但是从来没总结过PRC框架的知识点,所以记录一下喽。RPC作用RPC作为分布式系统常见的一种通信方法,通俗来讲,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。框架需解决问题RPC要达到的目标:远程调用时,要能够像...

2019-10-31 11:34:20 1539

原创 多构造器参数使用build设计模式

最近看HDFS源码,看到写副本时,ReplicaInfo类使用到了build设计模式,所以整理这篇文章,加深学习。提出问题当一个业务复杂的类包含多个属性时,如果我们想要创建实例对象时,就必须定义构造器,针对属性的可选性,我们的类可能变得如下:public class User { private final String name; private final int ag...

2019-10-28 21:45:56 1692

原创 自定义一个类叫java.lang.System???

原则上不行,类加载使用了双亲委托机制,当类加载器接收到类加载请求时,首先,该类加载器不会直接去加载类,而是让父类去加载,父类再去找父类去加载;当最顶层的父类无法加载时,才让子类去加载;System类会由启动类加载器去加载,所以我们自定义的System类完全没机会去加载。通过下面源码,可以看到类加载的整个处理逻辑。public Class<?> loadClass(String...

2019-07-26 19:51:59 487

原创 生产者-消费者模式

生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率,这是生产者消费者模型最重要的作用 。/** * 生产者消费者模型 * 通过wait、notify实现 * 缓冲区满和为...

2019-07-22 13:46:51 688

原创 ReentrantLock知识大盘点

定义重入锁就是支持重新进入的锁,表示该锁能够支持一个线程对资源的重新加锁。实现重进入ReenTrantLock为了实现重进入,必须要解决两个问题:(1) 线程再次获取锁;(2) 锁的最终释放。ReentrantLock是通过组合自定义同步器来实现锁的获取和释放,处理逻辑:通过判断当前线程是否为获取锁的线程来决定获取操作是否成功,如果是获取锁的线程再次请求,则将同步状态值进行增加并返...

2019-07-22 13:33:41 741

原创 synchronized大盘点

利用synchronized实现同步的基础Java 中的每一个对象都可以作为锁,具体表现为三种形式:对于普通同步方法,锁的是当前实例对象;对于静态同步方法,锁的是当前类的class对象;对于同步代码块,锁的是synchronzied括号中配置的对象。(静态为何锁的是class对象:synchronzied方法执行之前需要一个monitor,对于一个静态方法而言,monitor关联的是类...

2019-07-09 22:46:48 965

原创 java线程池知识点

线程池的优势合理的使用线程池会带来三个好处:降低资源的消耗。通过重复利用已创建的线程降低线程创建和销毁的开销;提高响应速度。当任务到达时,任务不需要等到线程创建就能直接执行;提高线程的可管理性。线程是稀缺资源,使用线程池可以进行统一分配、调优和监控。工作原理线程池保存一定量的线程,当有任务提交到线程池时,线程池若还没有达到最大线程数,则创建一个线程执行任务。若所有的线程都处于工作状...

2019-06-30 20:50:12 1223 1

原创 反射和动态代理

1 关于反射反射最大的作用之一就在于我们可以不在编译时知道某个对象的类型,而在运行时通过提供完整的”包名+类名.class”得到。注意:不是在编译时,而是在运行时。功能:在运行时能判断任意一个对象所属的类。在运行时能构造任意一个类的对象。在运行时判断任意一个类所具有的成员变量和方法。在运行时调用任意一个对象的方法。通俗来讲,利用Java反射机制我们可以加载一个运行时才得知名称的c...

2019-06-23 14:14:48 1089

原创 hdfs mkdir递归建立目录背后的设计

我们都知道hdfs命令:hdfs fs -mkdir -p /xx1/xx2/xx3 可递归创建一个目录,简单的命令背后,hadoop源码是如何执行的呐?接下来一起领略一下hadoop的源码魅力。接下来直接上mkdirs方法:public boolean mkdirs(Path f) throws IOException{ Path parent = f.getParent(); //...

2019-05-12 15:37:52 4071

原创 记一次有趣的hadoop源码编译

之前看到过很多人讲解源码编译,但自己一直没有尝试过。最近由于工作需要,想在本地搭建一个hadoop阅读环境,学习一下hadoop源码。准备阶段(1)首先下载要编译的hadoop源码版本,镜像链接如下:http://mirror.bit.edu.cn/apache/hadoop/common/(2)进入到hadoop目录,查看BUILDING.txt,了解编译需要的环境要求:比如本人编译的...

2019-05-04 13:58:14 1681

原创 常用linux命令汇总

后台进程ps -aux | more #查看后台运行的所有进程ps -aux|grep XXX ##查看指定内容的后台进程ps -aux | grep sshd ##查看sshd服务是否启动ps -ef | more #查看父进程ps -ef | grep sshd #查看sshd服务的父进程pstree -p #进程树ps -a:显示当前终端的所有进程信息ps...

2019-04-23 22:50:17 1604

原创 一个多线程面试题引发的思考

最近在梳理多线程的问题,遇到一个多线程的面试题,由此引发了一点思考:自己与优秀的工程师差距在哪里,这个面试题让自己看到了差距。希望自己以后在注重量的同时,能更多的关注质。题目:实现一个容器,提供两个方法:add,size。 写两个线程,线程1添加10个元素到容器中,线程2实现容器元素个数的监听,当个数达到5个时,线程2给出提示并结束。答案:方式一:public class T12 {...

2019-04-20 11:55:06 1779

原创 hive调优总结

###(1)本地模式:hadoop默认会将job提交到YARN集群,如果在测试阶段数据量比较小,可开启本地模式,加快程序执行的速度。set hive.exec.mode.local.auto=true;###(2)小表join大表1、保证大表在后,小表在前;原因:多表join时,hive假定查询中最后一个表是最大的表,在对每行记录进行join操作时,他会尝试将其他表缓存起来,然后扫描最后...

2019-04-08 17:40:22 1893

原创 flink Window机制

什么是 Window在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的5分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动...

2019-03-03 23:10:37 2291

原创 git feature分支远落后于dev分支解决方案

在团队合作中,每个人基本都是从dev分支建立自己的feature分支,完成feature分支开发任务后,merge到dev分支。如果我们的feature分支开发周期十分长,导致feature分支代码远落后于dev的代码,这时候如果我们想在自己的feature分支看到最新的dev分支代码怎么办?步骤:(1)进入自己的feature分支:git checkout frature-XXX...

2019-01-27 18:37:56 6875 1

原创 docker打包python程序

docker安装文档:https://docs.docker.com/docker-for-mac/#check-versionshttp://www.runoob.com/docker/macos-docker-install.htmldocker打包步骤(pipenv shell虚拟环境下python项目打包):项目最终结构:docker_test├── Dockerfile├─...

2018-12-29 13:34:38 9246 2

原创 hive中order by 、sort by、distribute by、cluster by、group by操作

order by对输入做全局排序,因此只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。SELECT * FROM db_hive.employee ORDER BY empID desc; //按照empID降序排列sort by不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by进行排序,并且设置mapreduce.job.redu...

2018-12-11 09:48:47 4541

原创 数据倾斜解决方案

数据倾斜定义简单的讲,数据倾斜就是我们在数据计算的时候,由于数据的分散度不够,导致大量的数据集中到了一台或者几台机器上计算,这些机器的计算速度远远低于整个集群的平均计算速度,导致整个计算过程十分缓慢。常见数据倾斜现象数据倾斜往往会发生在数据开发的各个环节中,比如:用Hive数据计算的时候reduce阶段卡在99.99%用SparkStreaming做实时算法的时候,一直会有executo...

2018-12-11 09:11:47 2989

原创 spark-submit参数说明

提交spark job时需要传入的参数说明Usage: spark-submit [options] &lt;app jar | python file&gt; [app options]

2018-12-07 14:16:45 2556

原创 spark的checkpoint机制

引入checkpoint机制原因Spark 在生产环境下经常会面临 Transformation 的 RDD 非常多(例如一个Job 中包含1万个RDD) 或者是具体的 Transformation 产生的 RDD 本身计算特别复杂和耗时(例如计算时常超过1个小时) , 这个时候如果可以对计算的过程进行复用,就可以极大的提升效率,此时我们必需考虑对计算结果的持久化。如果采用 persists ...

2018-12-07 09:53:59 7878

原创 Spark Streaming从Kafka中接收数据的两种方式

spark streaming流式处理kafka中的数据,首先是把数据接收过来,然后转换为spark streaming中的数据结构Dstream。接收数据的方式有两种:1.利用Receiver接收数据;2.直接从kafka读取数据。基于Receiver的方式(旧方法)流程:此方法使用Receiver接收数据。Receiver是使用Kafka高阶API接口实现的。与所有接收器一样,从Kafk...

2018-12-07 09:34:13 4381 3

原创 RDD算子操作

1、RDD定义RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。2、RDD的属性1)一组分片(Pa...

2018-12-06 19:04:51 3238

原创 hive自定义函数UDF的使用方法

虽然Hive已经提供了很多内置的函数,比如count()、sum(),但是还是不能满足用户的需求,因此提供了自定义函数供用户自己开发函数来满足自己的需求。本实例通过编写自己的UDF,实现通过一个人的出生日期,计算其所属的星座。一、自定义函数分类UDF(User-Defined-Function)用户自定义函数,输入一个数据然后产生一个数据;UDAF(User-Defined Aggregat...

2018-12-06 14:05:43 10427 2

原创 Hive调用python脚本

Hive的 TRANSFORM 关键字提供了在SQL中调用自写脚本的功能,本实例通过python脚本对电影数据进行清洗,帮助读者了解hive调用python脚本的整个流程。操作步骤:1、创建基表CREATE TABLE u_data ( userid INT, //用户ID movieid INT, //电影ID rating INT, //电...

2018-12-06 11:04:29 5870 1

原创 sparkStreaming kafka保证数据不丢失、不重复

sparkStreaming接收kafka数据的方式有两种:1.利用Receiver接收数据;2.直接从kafka读取数据(Direct 方式)保证数据不丢失(1)Receiver方式为确保零数据丢失,必须在Spark Streaming中另外启用预写日志(Write Ahead Logs)。这将同步保存所有收到的Kafka数据到分布式文件系统(例如HDFS)上,以便在发生故障时可以恢复所...

2018-12-05 20:27:54 7018

原创 kafka的安装与使用

安装zookeeper(以两个节点为例master、slave)1.解压zookeeper安装包tar -zxvf zookeeper-3.4.12.tgz2.配置(先在一台节点上配置)2.1添加一个zoo.cfg配置文件cd $ZOOKEEPER/confmv zoo_sample.cfg zoo.cfg2.2修改配置文件(zoo.cfg)dataDir=/home/hado...

2018-12-05 16:12:52 1664

原创 Hive常用函数总结

1、显示当前可用函数&amp;amp;amp;gt;SHOW FUNCTIONS;2、显示函数的具体描述信息&amp;amp;amp;gt;DESC FUNCTION EXTENDED concat;3、聚合函数函数处理的数据粒度为多条记录。sum()—求和 count()—求数据量 avg()—求平均直 distinct—求不同值数(去重) min—求最小值 max—求最人值4、字符串函数(1)字符串长度函数:...

2018-12-05 11:41:15 2038 1

原创 Hive与关系型数据库对比

查询语言由于 SQL 被广泛的应用在数据仓库中,因此,专门针对 Hive 的特性设计了类 SQL 的查询语言 HQL。熟悉 SQL 开发的开发者可以很方便的使用 Hive 进行开发。数据存储位置Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的;而数据库则可以将数据保存在块设备或者本地文件系统中。数据格式Hive 中没有定义专门的数据格式,数据格...

2018-12-05 10:19:59 1911

原创 数据质量保障原则

评估数据质量的好坏,业界标准并不统一。阿里巴巴对数据仓库主要从四个方面进行评估,即完整性、准确性、一致性和及时性。完整性完整性是指数据的记录和信息是否完整,是否存在缺失的情况。数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成数据不准确,所以说完整性是数据质量最基础的保障。比如交易中每天支付订单数都在100万笔左右,如果某一天支付订单数突然下降到1万笔,那么很可能是记录缺失...

2018-12-05 10:14:47 2924 1

翻译 数据仓库的分层架构

数据仓库标准上可以分为四层:ODS(临时存储层)、PDW(数据仓库层)、DM(数据集市层)、APP(应用层)。(1)ODS层:为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。一般来说ODS层的数据和源系统的数据是同构的,主要目的是简化后续数据加工处理的工作。从数据粒度上来说ODS层的数据粒度是最细的。ODS层的表通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理...

2018-12-04 21:32:57 16986

原创 数据仓库元数据介绍

当需要了解某地企业及其提供的服务时,电话黄页的重要性就体现出来了。元数据(Metadata)类似于这样的电话黄页。元数据的定义数据仓库的元数据是关于数据仓库中数据的数据。它的作用类似于数据库管理系统的数据字典,保存了逻辑数据结构、文件、地址和索引等信息。广义上讲,在数据仓库中,元数据描述了数据仓库内数据的结构和建立方法的数据。元数据是数据仓库管理系统的重要组成部分,元数据管理器是企业级数据仓...

2018-12-04 20:56:56 7464

原创 数据仓库维度建模疑点总结

1、维度建模定义?维度模型是专为统计分析优化的数据模型,维度模型的设计由业务流程驱动,每一个业务流程对应一张事实表以及若干维度表。2、一个数值数据元素是事实属性还是维度属性?(属于事实表还是维度表)在对每项业务做统计分析时,我们所关心的指标记录在事实表中,如交易金额、利润、销售量等;过滤与分组的条件则记录在维度表中,如交易时间,地区,商品种类等。在设计事实表中,一个原则就是我们要尽量存储可...

2018-12-04 20:16:14 1869 2

原创 hive常用操作指南

数据库操作创建数据库:CREATE DATABASE db_hive;高级:CREATE DATABASE db_hive [if not exists] db_hive##显示数据库:SHOW DATABASES;##查看数据库信息DESC DATABASE db_hive;##删除数据库:DROP DATABASE IF EXISTS db_hive;##进入数...

2018-12-04 19:00:50 1207

原创 hive的文件存储格式

Hive支持的文件存储格式有TEXTFILESEQUENCEFILERCFILEParquetORCFile自定义格式在建表的时候,可以使用STORED AS子句指定文件存储的格式。一般情况下,先建立一张存储格式为TEXTFILE的表,然后建立一张同类型、存储格式不同(ORC/PARQUET)的表,一方面实现数据压缩,另外增加查询效率。TEXTFILE即通常说的文本格式,默认长...

2018-12-04 18:41:51 964

原创 Hive分区和分桶

分区的目的是缩小搜索范围,加快查询速度;分区是针对表进行的,一个表可以从多个维度进行分区,比如按照日期进行分区;分区是创建表时通过PARTITIONED BY子句定义的,如:CREATE TABLE employee(eid int,name string,salary string,destination string) &amp;gt; PARTITIONED BY (dt string, c...

2018-12-04 09:31:47 1070

原创 Hive架构组成

Hive架构包括如下组件:Client、Thrift Server、Metastore和Driver。(1)Client用户接口,主要包含CLI(command language interface)、JDBC或ODBC、WEBUI(以浏览器访问hive);(2)Thrift Server提供JDBC/ODBC接入的能力,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不...

2018-12-04 09:16:04 4749

空空如也

空空如也

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

TA关注的人

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