自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 exists和select 1

有时候为了提高效率,只是为了测试下某个表中是否存在记录,就用1来代替。例如我的student 中 有学生信息表,我只想知道里面有没有数据并不在乎数据是哪些,就可以select 1 from student ,这样大大提高查询速度,选出100行个1,说明有100条学生信息。常搭配 exists方法当条件使用。所以说,当运用exists到相关子查询时,无所谓子表里SELECT后面跟的是什么,英文我们只需要exists返回值为true或者false即可。例子:select a.first_name,a.l

2021-03-29 23:53:30 2520

原创 MapReduce写WordCount案例:Map, Reduce, Driver

Map:import java.io.IOException;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;public class WordcountMapper extends Mapper<LongWritable, T

2021-03-14 01:25:36 280

原创 Java类型和Hadoop Writable类型的转化

2021-03-14 01:17:37 397

原创 MapReduce案例:WordCount

注解:MapTask的两个分区里会有一次并归排序,然后将排好序的单词重新放到两个分区中。ReduceTask中也会有一次并归排序(有几个分区就有几个reduceTask),将排好序的单词按key分组,形成一个iterator,然后付给reduce()方法。1)分布式的运算程序往往需要分成至少2个阶段。2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。4)MapR.

2021-03-14 01:02:39 179

原创 jar包的作用是什么?

1、JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。2、JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。3、JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。4、以客户的角度来看,.jar文件就是一种封装,他们不需要知道.jar文件中有多少个.class文件,

2021-03-13 18:20:22 6182 1

原创 Java局部变量和成员变量的区别

相同点:1.遵循变量的声明格式:数据类型 变量名 = 初始化值2.都有作用域局部变量和成员变量的不同:1、定义的位置不一样 局部变量:定义在方法内部 成员变量:在方法外部,直接写在类中2、作用范围不一样 局部变量:只有方法中能使用,除了方法就不能用 成员变量:整个类都可以用3、默认值不一样 局部变量:无默认值,先赋值在使用 成员变量:如果没有赋值有默认值4、内存的位置不一样 局部变量:位于栈内存 成员变量:为于堆内存5、生命周期不一样 局部

2021-03-12 01:49:05 1690

原创 Java基本类型和引用类型

基本类型:基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。引用类型:是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。举例说明: int a; a=250; //声明变量a的同时,系统给a分配了空间。引用类型就不是了,只给变量分配了引用空间,数据空间没有分配,因为谁都不知道数据是什么,整数,字符?我们看一个错误的例子:MyDate today;today.day = 4; //发生错误,因为today

2021-03-12 00:02:35 120

原创 Java引用变量和对象的联系:堆和栈

堆栈的存储特点决定了其中存储的数据类型。注意,栈内存储的除了基本类型的变量(int 这种类型的变量)还会存储对象的引用变量。java中,引用变量实际上是一个指针,它指向的是堆内存中对象实例。引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。以下分解成了四个步骤。Case cc; //在栈内存里面开辟了空间给引用变量cc,这时cc=nullcc=new Case();1. new Case()在堆内存里面开辟了空间给Case类的对象,这个

2021-03-11 23:59:12 416

原创 HDFS小文件的危害及补救措施

一、block块举例:block块官方设置的是64m,现在多数用的是128m(Hadoop 2.0x)举例:一个文件130M % 128M=1…2m结果是1个块128m,1个块2m一碗水130ml 一个瓶子规格容量128ml只能2个瓶子:第1个装满128ml 第二个装不满,实为2ml二、小文件的危害HDFS 适应场景: 大文件存储,小文件是致命的举例:接上个例子130m的文件10m的10个文件 10块30m的1个文件 1块共有11个文件: 11块系统维护一般轻量级会比较好,本

2021-03-09 05:00:53 779

原创 HDFS: NN和2NN工作机制

思考:NameNode中的元数据是存储在哪里的?首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage。这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一旦NameNode节点断电,就会产生数据丢失。因此,引入Edits文件(

2021-03-09 04:47:17 198

原创 Tail指令

tail 指令tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。 ➢ 基本语法tail 文件 (功能描述:查看文件头 10 行内容)tail -n 5 文件 (功能描述:查看文件头 5 行内容,5 可以是任意行数)tail -f 文件 (功能描述:实时追踪该文档的所有更新)文件 (功能描述:查看文件头 10 行内容)比如:date >> ./date.log 3次, 则我们可以用 tail -f date.log来看更新内容...

2021-03-09 03:35:50 476

原创 HDFS块的大小:寻址时间和传输时间的均衡

HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在Hadoop2.x版本中是128M,老版本中是64M。那么,问题来了,为什么一个block的大小就是128M呢?默认为128M的原因,基于最佳传输损耗理论!不论对磁盘的文件进行读还是写,都需要先进行寻址!最佳传输损耗理论:在一次传输中,寻址时间占用总传输时间的1%时,本次传输的损耗最小,为最佳性价比传输!目前硬件的发展条件,普通磁盘写的速率大概为100M/S, 寻址时间一般为1

2021-03-09 03:24:57 1287 2

原创 chkconfig指令解析及案例

2021-03-06 03:28:09 126

原创 service指令

介绍:服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请 求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。service 管理指令:service 服务名 [start | stop | restart | reload | status] 在 CentOS7.0 后 不再使用 service ,而是 systemctl 使用案例:查看当前防火墙的状况,关闭防火墙和重启防火墙。Servi

2021-03-06 03:17:04 682

原创 Hive中的日志

如果Hive出错了,我们该怎么办呢,当然是去查找日志了!Hive中的日志分为两种系统日志,记录了hive的运行情况,错误状况。Job 日志,记录了Hive 中job的执行的历史过程。1. 系统日志系统日志存储在什么地方呢 ?在hive/conf/ hive-log4j.properties 文件中记录了Hive日志的存储情况,默认的存储情况:hive.root.logger=WARN,DRFAhive.log.dir=/tmp/${user.name} # 默认的存储位置hive.l

2021-03-06 02:52:15 3287

原创 Find指令用法及例子

Find指令怎么用?find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。➢ 基本语法find [搜索范围] [选项]➢ 选项说明➢ 应用实例案例 1: 按文件名:根据名称查找/home 目录下的 hello.txt 文件find /home -name hello.txt案例 2:按拥有者:查找/opt 目录下,用户名称为 nobody 的文件find /opt -user nobody案例 3:查找整个 linux 系统下大于 10M 的文

2021-03-06 02:39:54 347

原创 scp和rsync的区别

在linux下,我们经常需要两台机器之间拷贝文件,或者由于业务需要备份文件,那就不得不用到scp和rsync两个命令。1.scpcp 在本机复制文件,这个命令我们经常使用,但是跨机器复制cp就不行了,scp可以跨机器复制文件,示例:scp -Crvp -l 1 test/ test@10.16.88.88:/usr/local## test/ 源文件 test@10.16.88.88:/usr/local 目标地址参数解释:-C(大写): 允许传输过

2021-03-05 19:43:50 4699

原创 Hadoop日志信息:系统服务输出的日志和应用程序日志的查看

Hadoop出错了怎么办?找日志!环境:[root@hadp-master hadoop-2.7.4]# hadoop versionHadoop 2.7.4Hadoop的日志大致可以分为两类:(1)Hadoop系统服务输出的日志;(2)Mapreduce程序输出来的日志(应用程序日志)。这两类的日志存放的路径是不一样的。本文基于Hadoop 2.x版本进行说明的,其中有些地方在Hadoop 1.x中是没有的,请周知。一、Hadoop系统服务输出的日志 诸如Nodemanger、Resou

2021-03-05 19:11:09 1425

原创 5. 最长回文子串

最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”双指针:int st, end; public String longestPalindrome(String s) { int len = s.length.

2021-03-04 02:21:05 146 1

原创 Leetcode 3. 无重复字符的最长子串

无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pw.

2021-03-03 01:20:25 96

原创 Leetcode 2. 两数相加

两数相加给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。方法一:假设两个链表至少有一个不空public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode node = new ListNode(0); ListNod.

2021-03-02 22:31:37 90

原创 Leetcode 1. 两数之和

两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> hashmap = new HashMap<>(); for (int.

2021-03-02 21:09:47 81

原创 map和flatMap的区别

map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd,他通常用来切分单词。Spark中map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象。 而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:例子1:object MapAndFlatMap { def main(args: Array[String]): Unit = { val r

2021-03-02 04:40:53 2208

原创 aggregate和aggregateBy的区别

两者的区别就是,aggregate直接出结果,aggregateByKey出RDD。当两者有一个不为0的初始值时,二者的区别就显示出来了:aggregateByKey:初始值只会参与分区内计算,不会参与分区间计算。aggregate:初始值会参与分区内计算,也会参与分区间计算。也就是说,分区的数据????????初始值和分区内的数据????????????合,然后再和初始值????????分区????的数据????合val rdd: RDD[Int] = sc.makeRDD(List(1, 2,

2021-03-02 04:23:35 718

原创 RDD基本操作

背景:在大数据实际应用开发中存在许多迭代算法,如机器学习、图算法等,和交互式数据挖掘工具。这些应用场景的共同之处是在不同计算阶段之间会重用中间结果,即一个阶段的输出结果会作为下一个阶段的输入。RDD 正是为了满足这种需求而设计的。虽然 MapReduce 具有自动容错、负载平衡和可拓展性的优点,但是其最大的缺点是采用非循环式的数据流模型,使得在迭代计算时要进行大量的磁盘 I/O 操作。所以通过使用 RDD,用户不必担心底层数据的分布式特性,只需要将具体的应用逻辑表达为一系列转换处理,就可以实现管道化,从而避

2021-03-02 04:15:14 1471

空空如也

空空如也

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

TA关注的人

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