- 博客(45)
- 收藏
- 关注

原创 Hive学习心得&Hive的UDF
一:Hive基本介绍Hive是建立在Hadoop上的数据仓库基础构架,它提供了一系列工具可以用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模的数据机制。使用语言:QL语言(类SQL查询语言)。能处理内建的mapper和reducer无法完成的复杂分析工作。1.Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后再Hadoop执行。2
2015-02-16 10:29:24
1536
原创 Java多线程之可见性分析
可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到。Java内存模型(JMM)描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存中和从内存中读取出变量这样的底层细节。多线程中所有的变量都存储在主内存中,每个线程都有自己的独立的工作内存,里面保存该线程使用的变量的副本(主内存中该变量的拷贝)。两种方式实现多线程的可见性synchronized实现可见性sy
2015-04-22 10:42:56
1152
原创 Spring中Bean的生命周期解读
Spring容器中的Bean拥有明确的生命周期,由多个特定的生命阶段组成,每个生命阶段都允许外界对Bean施加控制。在Spring中,我们从Bean的作用范围和实例化Bean时所经历的一系列阶段来描述Bean的生命周期:BeanFactory中的Bean的生命周期 简单可分为三类 1.Bean自身的方法 (调用Bean的构造函数实例化Bean,调用setter方法设置Bean的属性值,以及
2015-04-20 17:29:26
1028
原创 Spring之IOC实现原理
前段时间写了篇关于Spring的AOP框架实现原理的文章,现在浅谈下Spring的另一大核心概念IOC的原理。 IOC:即控制反转。官方解释是让调用类对某一接口实现类的依赖关系由第三方注入,以转移调用类对某一接口实现类的依赖。 下面将举个现实例子加深理解: “剧本”要选定“角色”的“饰演者”,我们可以创建第三方“导演“来控制”剧本”,引入“导演”,“剧本”和“饰演者”将完全接偶。”导演“将
2015-04-20 16:28:17
2751
原创 Lucene实现SearchManager近实时搜索
lucene通过NRTManager这个类来实现近实时搜索,所谓近实时搜索即在索引发生改变时,通过线程跟踪,在相对很短的时间反映给给用户程序的调用NRTManager通过管理IndexWriter对象,并将IndexWriter的一些方法(增删改)例如addDocument,deleteDocument等方法暴露给客户调用,它的操作全部在内存里面,所以如果你不调用I
2015-04-13 10:24:09
2312
原创 Lucene实现自定义中文同义词分词器
----------------------------------------------------------lucene的分词_中文分词介绍----------------------------------------------------------Paoding:庖丁解牛分词器。已经没有更新了mmseg:使用搜狗的词库1.导入包(有两个包:1.带dic的,2
2015-04-08 10:08:04
3187
原创 Lucene分词原理与方式
--------------------------------------------------------lucene的分词_分词器的原理讲解--------------------------------------------------------几个默认分词SimpleAnalyzerStopAnalyzerWhitespaceAnalyzer(根据空格分
2015-04-08 09:56:37
2313
原创 Lucene查询方式总结
--------------------------------------------------IndexReader的设计--------------------------------------------------IndexReader的创建需要消耗大量内存空间,所以通过将IndexReader设计出属性值,进行一次创建整个项目周期就只有一个IndexRead
2015-04-04 14:37:56
1531
原创 Lucene索引创建方法和步骤
在全文索引工具中,都是由这样的三部分组成1.索引部分2.分词部分3.搜索部分----------------------------------索引创建域选项----------------------------------Field.Store.YES或者NO(存储域选项)YES:表示会把这个域中的内容完全存储到文件中,方便进行还原[对于主键,标题可以是这种方式
2015-04-01 15:58:57
1800
原创 MapReduce处理输出多文件格式(MultipleOutputs)
MultiPleOutputs原理MapReduce job中,可以使用FileInputFormat和FileOutputFormat来对输入路径和输出路径来进行设置。在输出目录中,框架自己会自动对输出文件进行命名和组织,如part-(m|r)-00000之类,但有时为了后续流程的方便,我们常需要对输出结果进行一定的分类和组织。以前常用的方法是在MR job运行之后,用脚本对目录下的数据
2015-03-30 16:43:43
5540
原创 MapReduce对输入多文件的处理2自定义FileInputFormat类
多种自定义文件格式的文件输入处理MultipleInputs可以让MR支持多种输入格式比如我们有两种文件格式,那么我们就要有两套Record Class,RecordReader和InputFormatInputFormat(extends FileInputFormat)--->RecordReader(extends RecordReader)--->RecordClass(imp
2015-03-29 19:43:12
1705
原创 MapReduce对输入多文件的处理
MultipleInputs类指定不同的输入文件路径以及输入文化格式 现有两份数据 phone 123,good number 124,common number 125,bad number user zhangsan,123 lisi,124 wangwu,125 现在需要把user和phone按照phone number连接起来。得到下面的结果 z
2015-03-29 15:28:16
5251
原创 MapReduce实现倒排索引
使用到Combiner编程(可插拔式)在map端对输出先做合并,最基本是实现本地key合并,具有本地reduce功能如果不用combiner,所有结果都是reduce完成,效率会底下Combiner的的输入输出类型应该完全一致(实现如累加,最大值等功能)job.setCombinerClass();倒排索引基本实现package cn.MapReduce.px;impo
2015-03-28 16:10:35
1131
原创 MapReduce处理表的自连接
原始数据/* * 原始数据 * 子 父 * Tom Lucy Tom Jack Jone Locy Jone Jack Lucy Mary Lucy Ben Jack Alice Jack Jesse TerryAlice TerryJesse PhilipAlma Mark Terry Mark Alma */要求通过
2015-03-28 12:59:05
2242
原创 MapReduce处理二次排序(分区-排序-分组)
MapReduce二次排序原理在map阶段,使用job.setInputFormatClass定义的InputFormat将输入的数据集分割成小数据块splites,同时InputFormat提供一个RecordReader的实现。本例子中使用的时TextInputFormat,他提供的RecordReader会将文本的字节偏移量作为key,这一行的文本作为value。这就是自定义Ma
2015-03-28 12:37:11
1724
原创 MapReduce的两表join操作优化
注:优化前的分析过程详见本博的上篇博文案例地址(Address)和人员(Person)的一对多关联 原始数据地址(Address)数据id AddreName1 beijing2 shanghai3 guangzhou人员(Person)数据1 zhangsan 12 lisi 23 wangwu 14 zhaoliu 35 maqi 3
2015-03-26 14:52:39
2238
原创 MapReduce的两表join一般操作
案例:(部门员工两表的join查询)原始数据员工表(emp): empno ename job mgr hiredate sal comm deptno loc 7499 allen salesman 7698 1981-02-20 1600 300 30 7782 clark manager 7639 1981-06-09 2450
2015-03-26 14:35:05
3008
原创 MapReduce处理数据平均值与数值大小排行比较
一:计算数据平均值在map中将名称作为key 数据为value写出去/* * 计算平均成绩 * 名字作为key 分数值为value写出去 */public class AverageMap extends Mapper { protected void map( LongWritable key, Text value, org.apache.hadoop.ma
2015-03-24 13:36:34
2771
原创 MapReduce处理数据去重与数据排序
一:MapReduce处理数据去重Map的key具有数据去重的功能/* * 去除数据中相同数据 * 数据去重问题 * 以整个数据作为key发送出去, value为null */public class DelsameMap extends Mapper { @Override protected void map(LongWritable key, Text value,
2015-03-24 11:23:21
4131
1
原创 Java算法解析3—————对字符串相关算法
一:根据某种规则缩短字符串/* * 根据规则缩短字符串 */public class Dome07 { public static void main(String[] args) { String str = "C:\\Windows\\Resources\\Themes\\aero"; while (true) { System.out.println(str);
2015-03-21 20:53:11
957
原创 Java算法分析2—————几种排序&汉诺塔算法
一:插入排序/* * 插入排序 *//* * 原序列 [12] 15 9 20 6 31 24 * 第0趟 [12 15] 9 20 6 31 24 * 第1趟 [9 12 15] 20 6 31 24 * 第2趟 [9 12 15 20] 6 31 24 * 第3趟 [6 9 12 15 20] 31 24 * n个数,一共需要多少趟?n个数,n-1趟 * 第
2015-03-21 18:55:54
634
原创 MySQL数据库触发器(trigger)
MySQL触发器(trigger):监视某种情况并触发某种操作 一:四要素触发时间:before/after 地点:table监视操作:insert/update/delete触发操作:insert/update/delete 二:创建触发器delimiter $ #将sql结束符改为$ 方便写触发的sql语句create trigger tr
2015-03-19 17:04:56
916
转载 Hibernate缓存机制
Hibernate 缓存机制 一、why(为什么要用Hibernate缓存?)Hibernate是一个持久层框架,经常访问物理数据库。为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 二、what(Hibernate
2015-03-19 16:47:41
459
原创 Java算法分析1—————寻找数组相同元素
算法的两个评测指标:运行时间和内存消耗要么用时间换空间,要么用空间换时间 寻找数组相同元素测试一:0~99共100个元素各不相同,新加入一个0~99的元素不明确位置从101个元素数组中找出与0~99元素中重复的一个/* 找相同元素 * 0~99共100个元素各不相同 * 从101个元素数组中找出与0~99元素中重复的一个 */public class Dome01
2015-03-19 15:20:22
2761
原创 MySQL数据库优化总结
一:MySQL数据库优化考量标准1.数据库设计(表设计合理)三范式(规范的模式) 三范式包括: 第一范式:1NF是对属性的原子性的约束,要求属性具有原子性,不可再分解。(只要是关系型数据库都满足) 第二范式:2NF是记录的唯一性约束,要求记录有唯一标识,即实体的唯一性。(设立主键) 第三范式:3NF是对
2015-03-17 11:51:44
833
原创 实现类似Spring的可配置的AOP框架
可配置的AOP框架中两个重要的类:BeanFactory工厂类BeanFactory负责创建目标或代理类的实例对象,并通过配置文件进行切换,其getBean()方法根据参数字符串返回一个相应的实例对象,如果参数字符串在配置文件中对应的类名不是ProxyFactoryBean(根据本例子),则直接返回该类的实例对象,否则返回该类实例对象的getProxy()方法返回的对象。BeanFac
2015-03-15 12:10:26
1054
原创 AOP代理分析
一:代理代理类和目标类实现了相同的接口,相同的方法。如果采用工厂模式和配置文件的方式进行管理,则不需要修改客户端程序,在配置文件中配置使用目标类还是代理类,这样以后就很容易切换。(例如Spring框架的实现)AOP:AOP的目标就是要使交叉业务模块化,可以将切面代码移动到原始方法的范围。 二:动态代理JVM可以在运行期间动态生成出类的字节码,这种动态生成的类往往被用作代
2015-03-14 13:51:13
829
原创 Java类加载器原理分析
一:Java虚拟机中可以安装多个类加载器,系统默认是三个主要的类加载器:Bootstrap ExtClassLoader AppClassLoader类加载器也是Java类。因为其他Java类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是Java类,这正是Bootstrap 二:Java虚拟机中的所有类加载器采用具有父子关系的树形结构,在实例化每个类加载器对象时,需
2015-03-12 16:17:27
625
原创 Java泛型
一:泛型指省去类型转换之苦。泛型集合:只能存储同一类型的对象Java的泛型只在编译前对集合类型进行规范,编译后将去“类型化”不再保留泛型的信息。 二:泛型规则1.参数化类型不等,不考虑类型参数的继承关系 Vector v=new Vector(); //错误 Vector v=new Vector(); //错误2.在创建数组实例时,数组的元素不能
2015-03-11 16:43:13
554
原创 Java注解
一:Java1.5起默认三个annotation类型:@override 覆盖父类方法的注解@SuppressWarning 忽略警告@Deprecated 标记方法过时二:注解的运用注解类@interface A{}应用了"注解类"的类@Aclass B{}对”应用了注解类的类"进行反射操作的类class C{ if(B
2015-03-10 10:55:28
687
原创 JavaBean的两种内省操作
反射技术实际是已经能够完全满足我们对javaBean的各种操作了,但是为了方便JDK还是为我们提供了一套操纵JavaBean的API,我们称这套API为内省操作(Introspector)下面介绍两种JavaBean的内省操作先定义个JavaBean类public class userbean { private int age; private String name; pu
2015-03-09 18:35:23
473
原创 ArrayList与HashSet比较及HashCode分析
ArrayList与HashSet比较 ArrayList是一种有顺序的集合 HashSet通过比较两个对象是否相等,相同则不加入HashSet集合,不允许重复。如何比较? HashSet集合对象中必须重写equals()方法和hashCode()方法 HashCode分析 目的提
2015-03-08 15:29:26
1127
原创 Java反射原理分析
一:Java的反射就是把Java类中的各种成分映射成相应的Java类。例如:一个Java类中用一个Class类的对象来表示此Java类中的组成部分:成员变量,方法,构造方法,包等信息也用一个个的Java类来表示。比如汽车是一个类,汽车中的发动机中的发动机,变速箱等一个一个个的类。二:一句话概括:反射就是把Java类中的各个成分映射成相应的Java类。三:反射的基石:Class类(J
2015-03-07 18:45:56
2343
原创 Java枚举分析
枚举的作用是在编译时阻止数据不合法,规范数据类型。一:用普通类模拟枚举实现原理在主类中public class Enum { public static void main(String[] args) { // 定义的对象及为枚举对象的属性 每一个枚举都是一个对象 WeekDay1 weekday = WeekDay1.SUN; System.out.print
2015-03-06 21:06:49
461
原创 HBase学习心得之HBase原理&Java接口操作增删改查
HBase之伟大(总结) 一:region是按大小分割的,每个表开始只有一个region。随着数据不断插入表,region会不断增大,增大到了某个阀值,HRegion就会等分成两个新的HRegion。 二:HRegion是Hbase中分布式存储和负载均衡的最小单位,最小单位就表示不同的HRegion能分布在不同的HRegion Server上,但一个HRegion是不能拆分到多个S
2015-02-10 11:23:03
837
原创 HBase学习心得
Hadoop Database简称HBase,是一个高可靠性、高性能、面向列,可伸缩的分布式存储系统。 利用HBase可在廉价的PC Server上搭建起大规模结构化存储集群。利用HDFS作为其文件存储系统、利用MapReduce处理HBase中海量数据、利用Zookeeper作为协调工具。 一:HBase主要包含三种属性: 主键:Row Key
2015-02-04 18:34:01
2555
原创 数据迁移sqoop学习心得
sqoop是Apache基金会下的数据迁移工具。主要功能是能将数据库中的数据导入到hdfs中,同时也能使hdfs中的数据导出至数据库中。sqoop的安装只需在hadoop集群中的任意一台机器上即可。因为sqoop自动配置了搜寻NameNode和ResourceManage的功能,运行时能访问到hadoop的core-site.xml,hdfs-site.xml,yarn-site.xml等配置
2015-02-03 10:51:39
1713
原创 ZooKeeper集群搭建
ZooKeeper是Hadoop的分布式协调服务。包含一个简单的原语集,分布式应用程序可以基于Zookeeper实现同步服务,配置维护和命名服务等。Zookeeper集群必须是奇数台。只要一半以上的机器运行,就能提供服务。 zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg。其中各配置项的含义,解释如下:1.t
2015-01-24 17:08:05
617
原创 hadoop远程调试
JDWP 设置JVM本身就支持远程调试,Eclipse也支持JDWP,只需要在各模块的JVM启动时加载以下参数:dt_socket表示使用套接字传输。address=8000JVM在8000端口上监听请求,这个设定为一个不冲突的端口即可。server=y y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。suspend=yy表示启动的JVM会暂停等
2015-01-20 13:04:43
512
原创 Linux下maven开发MapReduce
1.安装mvn 1.1上传安装包到linux 1.2解压maven安装包 mkdir /usr/maven tar -zxvf apache-maven-3.2.1-bin.tar.gz -C /usr/maven 1.3添加maven到环境变量 vim /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_5
2015-01-19 18:43:28
926
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人