- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 大数据简单面试题
面试题1、HashMap 和 Hashtable 区别HashMap和Hashtable的存储和遍历都是无序的!继承的类不同:HashMap继承的是AbstractMap类;Hashtable 继承Dictionary类。但是都实现了Map接口。线程安全问题:hashmap是非线程安全的,底层是一个Entry数组,put进来的数据,会计算其hash值,然后放到对应的bucket上去,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点,对链表而言,新加
2020-05-27 19:42:56 8045
原创 Hadoop-16
压缩/解压缩对数据流的压缩和解压缩CompressionCodec有两个方法可以用于轻松地压缩或解压缩数据。要想对正在被写入一个输出流的数据进行压缩,我们可以使用 createOutputStream(OutputStreamout)方法创建一个CompressionOutputStream(未压缩的数据将 被写到此),将其以压缩格式写入底层的流。相反,要想对从输入流读取而来的数据进行解压缩,...
2019-03-02 23:23:55 215
原创 Hadoop-15
找微信共同好友分析实战1)需求:以下是微信的好友列表数据,冒号前是一个用,冒号后是该用户的所有好友(数据中的好友关系是单向的)A:B,C,D,F,E,OB:A,C,E,KC:F,A,D,ID:A,E,F,LE:B,C,D,M,LF:A,B,C,D,E,O,MG:A,C,D,E,FH:A,C,D,E,OI:A,OJ:B,OK:A,C,DL:D,E,FM:E,F,GO:...
2019-03-02 22:58:21 183
原创 Hadoop-14
倒排索引实战(多job串联)0)需求:有大量的文本(文档、网页),需要建立搜索索引a.txt:atguigu pingpingatguigu ssatguigu ssb.txtatguigu pingpingatguigu pingpingpingping ssc.txtatguigu ssatguigu pingping最终输出结果:(1)第一次预期输出结果...
2019-03-01 23:06:42 193
原创 Hadoop-13
日志清洗(数据清洗)简单解析版1)需求:去除日志中字段长度小于等于11的日志。2)输入数据3)实现代码:(1)编写LogMapperimport java.io.IOException;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;import org.apa...
2019-03-01 22:27:08 137
原创 Hadoop-12
过滤日志及自定义日志输出路径(自定义OutputFormat)1)需求过滤输入的log日志中是否包含atguigu(1)包含atguigu的网站输出到e:/atguigu.log(2)不包含atguigu的网站输出到e:/other.log2)输入数据log.txt:http://www.baidu.comhttp://www.google.comhttp://cn.bing.c...
2019-03-01 16:29:08 148
原创 Hadoop-11
小文件处理(自定义InputFormat)1)需求无论hdfs还是mapreduce,对于小文件都有损效率,实践中,又难免面临处理大量小文件的场景,此时,就需要有相应解决方案。将多个小文件合并成一个文件SequenceFile,SequenceFile里面存储着多个文件,存储的形式为文件路径+名称为key,文件内容为value。2)输入数据最终预期文件格式:3)分析小文件的优化无非...
2019-02-28 23:05:58 140
原创 Hadoop-10
MapReduce中多表合并案例1)需求:订单数据表t_order:商品信息表t_product将商品信息表中数据根据商品id合并到订单数据表中。最终数据形式:需求1:reduce端表合并(数据倾斜)通过将关联条件作为map输出的key,将两表满足join条件的数据并携带数据所来源的文件信息,发往同一个reduce task,在reduce中进行数据的串联。1)创建商品和订...
2019-02-28 22:26:20 170
原创 Hadoop-9
3.3 求每个订单中最贵的商品(GroupingComparator)1)需求有如下订单数据2)输入数据Order_0000001 Pdt_01 222.8Order_0000002 Pdt_05 722.4Order_0000001 Pdt_05 25.8Order_0000003 Pdt_01 222.8Order_0000003 Pdt_01 33.8Order_0000...
2019-02-28 19:48:22 180
原创 Hadoop-8
流量汇总程序案例需求1:统计手机号耗费的总上行流量、下行流量、总流量(序列化)1)需求:统计每一个手机号耗费的总上行流量、下行流量、总流量2)数据准备phone_data.txt1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120.196.100.82 i02.c.aliimg.com 24 27 2481 24681 2001...
2019-02-28 00:12:41 271
原创 Hadoop-7
WordCount案例需求1:统计一堆文件中单词出现的个数(WordCount案例)0)需求:在一堆给定的文本文件中统计输出每一个单词出现的总次数1)数据准备:hello.txt2)分析按照mapreduce编程规范,分别编写Mapper,Reducer,Driver。3)编写程序(1)定义一个mapper类 1. 用户自定义的Mapper要继承自己的父类 2. Mappe...
2019-02-27 18:50:33 183
原创 Hadoop-6
MapReduce数据压缩概述:压缩技术能够有效减少底层存储系统(HDFS)读写字节数。压缩提高了网络带宽和磁盘空间的效率。在Hadood下,尤其是数据规模很大和工作负载密集的情况下,使用数据压缩显得非常重要。在这种情况下,I/O操作和网络数据传输要花大量的时间。还有,Shuffle与Merge过程同样也面临着巨大的I/O压力。鉴于磁盘I/O和网络带宽是Hadoop的宝贵资源,数据压缩对于节...
2019-02-26 20:32:04 268
原创 Hadoop-5
CombineTextInputFormat切片机制关于大量小文件的优化策略1)默认情况下TextInputformat对任务的切片机制是按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个maptask,这样如果有大量小文件,就会产生大量的maptask,处理效率极其低下。2)优化策略(1)最好的办法,在数据处理系统的最前端(预处理/采集),将小文件先合并成大文件,再上传到H...
2019-02-25 22:17:25 197
原创 Hadoop-4
MapReduce概念Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架;Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上。为什么要MapReduce1)海量数据在单机上处理因为硬件资源限制,无法胜任2)而一旦将单机版程序扩展到集群来分布式运行,将极大...
2019-02-23 23:03:44 323
原创 Hadoop-3
DataNode工作机制1)一个数据块在datanode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。2)DataNode启动后向namenode注册,通过后,周期性(1小时)的向namenode上报所有的块信息。3)心跳是每3秒一次,心跳返回结果带有namenode给该datanode的命令如复制块数据到另一台机器,或删...
2019-02-23 16:27:29 492
原创 Hadoop-2
一致性模型HDFS某些地方为了性能可能会不符合POSIX(是的,你没有看错,POSIX不仅仅只适用于linux/unix,Hadoop 使用了POSIX的设计来实现对文件系统文件流的读取),所以它看起来可能与你所期望的不同,要注意。 创建了一个文件以后,它是可以在命名空间(namespace)中可以看到的: Path p = new Path(“p”); fs.create§...
2019-02-23 00:30:44 406
原创 Hadoop-1
安装不说了,配置参数就那些重要特性如下:(1)HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M(2)HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/fi...
2019-02-22 17:55:09 273
原创 Zookeeper-1
一、概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave...
2019-02-19 21:06:45 438
原创 算法:报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 111221示例 1:11示例 2:41211输出结果是字符串。规律为:当前结果读上一个结果,中间有一样的数字就一起读。例如:11读的是上一个1,1个1,所以结果为11.21读的是上一个11,...
2019-02-03 00:45:30 512
原创 Java反射、正则表达式
/* * JAVA反射机制是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法; * 对于任意一个对象,都能够调用它的任意一个方法和属性; * 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 * * 动态获取类中信息,就是java反射 。 * 可以理解为对类的解剖。 * * 要想要对字节码文件进行解剖,必须要有字节码...
2019-01-21 16:00:32 295
原创 Java网络编程
略,待补最常见的客户端:浏览器 :IE。最常见的服务端:服务器:Tomcat。为了了解其原理:1,自定义服务端,使用已有的客户端IE,了解一下客户端给服务端发了什么请求?发送的请求是:GET / HTTP/1.1 请求行 请求方式 /myweb/1.html 请求的资源路径 http协议版本。请求消息头 . 属性名:属性值Accept: image/gif, i...
2019-01-21 14:56:38 129
原创 Java-IO-3
File类: 用于将文件和文件夹封装成对象。 1,创建。 boolean createNewFile():如果该文件不存在,会创建,如果已存在,则不创建。不会像输出流一样会覆盖。 boolean mkdir(); boolean mkdirs(); 2,删除。 boolean delete(); void deleteOnExit(); 3,获取: ...
2019-01-21 14:50:11 148
原创 Java-IO-2
复制文本文件/* * 思路: * 1,需要读取源, * 2,将读到的源数据写入到目的地。 * 3,既然是操作文本数据,使用字符流。 */ public class CopyTextTest { public static void main(String[] args) throws IOException { //1,读取一个已有的文本文件,使用字符读取流和文件相关联。...
2019-01-20 15:40:36 163
原创 Java-IO-1
输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出。字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字。在对这个文字进行操作。简单说:字节流+编码表 ---------------------------------------字节流的两个顶层父类:1,InputStream 2,O...
2019-01-19 16:59:04 101
原创 Java-API-3
LinkedHashMappublic static void main(String[] args) { HashMap<Integer,String> hm = new LinkedHashMap<Integer,String>(); hm.put(7, "zhouqi"); hm.put(3, "zhangsan"); hm
2019-01-19 16:39:45 208 1
原创 Java-API-2
LinkedListaddFirst();addLast():jdk1.6offerFirst();offetLast();getFirst(); //获取但不移除,如果链表为空,抛出NoSuchElementException.getLast();jdk1.6peekFirst(); //获取但不移除,如果链表为空,返回null.peekLast():removeFir...
2019-01-18 15:52:53 131
原创 Java-API-1
Stringpublic static void stringConstructorDemo() { String s = new String(); //等效于String s = ""; 不等效String s = null; byte[] arr = {97,66,67,68}; String s1 = new String(arr); System.out.printl...
2019-01-17 17:37:08 220
原创 Java多线程2
多线程状态图创建线程的第一种方式:继承Thread类。创建线程的第二种方式:实现Runnable接口。1,定义类实现Runnable接口。2,覆盖接口中的run方法,将线程的任务代码封装到run方法中。3,通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数进行传递。 为什么?因为线程的任务都封装在Runnable接口子类对象的run方...
2019-01-16 16:29:49 145
原创 Java多线程1
进程:正在进行中的程序(直译). 线程:就是进程中一个负责程序执行的控制单元(执行路径)一个进程中可以多执行路径,称之为多线程。一个进程中至少要有一个线程。开启多个线程是为了同时运行多部分代码。每一个线程都有自己运行的内容。这个内容可以称为线程要执行的任务。多线程好处:解决了多部分同时运行的问题。多线程的弊端:线程太多会降低效率。其实应用程序的执行都是cpu在做着快速的切换完成的...
2019-01-15 19:31:30 207
原创 Java异常1
异常(未完待续)是在运行时期发生的不正常情况。。在java中用类的形式对不正常情况进行了描述和封装对象。描述不正常的情况的类,就称为异常类。以前正常流程代码和问题处理代码相结合,现在将正常流程代码和问题处理代码分离。提高阅读性.其实异常就是java通过面向对象的思想将问题封装成了对象.用异常类对其进行描述。不同的问题用不同的类进行具体的描述。 比如角标越界。空指针等等。问题很多,...
2019-01-15 16:22:16 155
原创 Java面向对象6
接口补笔记本电脑使用。为了扩展笔记本的功能,但日后出现什么功能设备不知道。定义一个规则,只要日后出现的设备都符合这个规则就可以了。规则在java中就是接口。*/interface USB{ // 暴露的规则。 public void open(); public void close();}class BookPC{ public static void main(St...
2019-01-14 23:17:10 131
原创 Java面向对象5
继承继承的好处:1,提高了代码的复用性。2,让类与类之间产生了关系,给第三个特征多态提供了前提.java中支持单继承。不直接支持多继承,但对C++中的多继承机制进行改良。(接口)单继承:一个子类只能有一个直接父类。多继承:一个子类可以有多个直接父类(java中不允许,进行改良)不直接支持,因为多个父类中有相同成员,会产生调用不确定性。在java中是通过"多实现"的方式来体现。ja...
2019-01-13 22:56:34 175
原创 Java面向对象4
单例模式设计模式:对问题行之有效的解决方式。其实它是一种思想。单例设计模式解决的问题:就是可以保证一个类在内存中的对象唯一性。必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。如何保证对象唯一性呢?1,不允许其他程序用new创建该类对象。2,在该类创建一个本类实例。3,对外提供一个方法让其他程序可以获取该对象。步骤:1,私有化该类构造函数。2,通过new在本类...
2019-01-13 19:30:04 125
原创 Java面向对象3
static关键字1,static是一个修饰符,用于修饰成员。2,static修饰的成员被所有的对象所共享。3,static优先于对象存在,因为static的成员随着类的加载就已经存在了。4,static修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员 。5,static修饰的数据是共享数据,对象中的存储的是特有数据。成员变量和静态变量的区别?1,两个变量的生命...
2019-01-13 00:30:03 119
原创 Java面向对象2
构造函数定义:构建创造对象时调用的函数。作用:可以给对象进行初始化。创建对象都必须要通过构造函数初始化。一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数。如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有了。class Person{private String name;private int age;//定义一个Person类的构造函数。Pe...
2019-01-12 00:26:09 105
原创 Java面向对象1
把大象装进冰箱分几步?1,面向过程:打开冰箱。存储大象。关上冰箱。对于面向过程思想,强调的是过程(动作)。C语言.2,面向对象:冰箱打开。冰箱存储。冰箱关闭。对于面向对象思想,强调的是对象(实体)。C++ Java C#面向对象特点:面向对象就是一种常见的思想。符合人们的思考习惯。面向对象的出现,将复杂的问题简单化。面向对象的出现,让曾经在过程中的执行...
2019-01-10 00:23:57 198
原创 Java数组3
多维数组二维数组定义的格式:class Array2Demo{ public static void main(String[] args) { // int[][] arr = new int[3][2];//创建一个二维数组,该数组中有3个一维数组,每一个一维数组中有2个元素。// System.out.println(arr);//直接打印二维数组。 [[I@c1716...
2019-01-09 23:27:16 133
原创 Java数组2
数组中的常见操作一、数组遍历//创建数组格式1 //需要一个容器,但是不明确容器的具体数据。 int[] arr = new int[3]; //创建数组格式2 //需要一个容器,存储已知的具体数据。 //元素类型[] 数组名 = new 元素类型[]{元素,元素,……}; int[] arr = new int[]{89,34,270,17}; int[] ar...
2019-01-08 01:04:05 2091
原创 Java数组1
**Java数组1**//元素类型[] 数组名 = new 元素类型[元素个数或数组长度];int[] arr = new int[3];内存的划分:1,寄存器。(CPU处理)2,本地方法区。(Java虚拟机)3,方法区。4,栈内存。存储的都是局部变量。(定义在方法中的变量,而且变量所属作用域一旦结束,该变量就自动释放) {//局部代码块。限定局部变量的生命周期。 ...
2019-01-03 23:54:33 471
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人