`
x10232
  • 浏览: 55539 次
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
虽然企业部署Hadoop大数据系统的最终目的是进行“性感”的分析应用,但是大多数企业距离这一目标还很远很远。 根据IDC发布的Hadoop-MapReduce软件生态系统预测报告,Hadoop 市场正在以60%的年复合增长率高速扩张。但是该报告也揭示了一个让人吃惊的事实,作为大数据分析应用的代名词,Hadoop的流行其实与数据分析无关。 实际上大多数采用Hadoop的公司都没有将Hadoop用于大数据分析,而是把Hadoop作为一种廉价的海量存储和ETL(抽取、转换、加载)系统。 穷人的ETL 虽然被打上了“大数据分析工具”的标签,但在大多数企业眼里,Hadoop是“穷人的ETL”。 ...

位图应用场合

    博客分类:
  • Java
位图主要用于快速检索关键字状态,通常要求关键字是一个连续的序列(或者关键字是一个连续序列中的大部分),最基本的情况,使用1bit标示一个关键字的状态(可标示两种状态),但根据需要也可以使用2bit(标示4种状态),3bit(标示8种状态),当一个状态标示需要的位数达到32bit时,就演变成来一个整型数组了。   位图的主要应用场合:标示连续(或接近连续,即大部分会出现)的关键字序列的状态(状态数/关键字个数越小越好)。位图还可以用于实现诸如BloomFilter(用于快速判断一个元素是否属于某个集合)等扩展结构,这里只讨论纯位图的应用场景。

泛型使用注意事项

    博客分类:
  • Java
   参数化类型可以引用一个原始类型的对象,编译报告警告,例如,          Collection<String> c = new Vector();//可不可以,不就是编译器一句话的事吗?           原始类型可以引用一个参数化类型的对象,编译报告警告,例如,          Collection c = new Vector<String>();//原来的方法接受一个集合参数,新的类型也要能传进去           参数化类型不考虑类型参数的继承关系:           Vector<String> v = new Vector ...
重点区别: (1)hive是数据仓库,传统数据库是关系型数据库。 (2)读时模式vs写时模式 在传统数据库里,表的模式是在数据加载的时候强制确定的。如果在数据加载时发现数据不符合模式,则拒绝加载。因为数据是在写入数据库时对照模式进行检查,因此这一设计有时被称为“写时模式”。(它需要读取数据,然后进行“解析”,再进行序列化以数据库内部格式存入磁盘) 另一方面,Hive对数据的验证并不在加载数据是进行,而在查询时进行,这称为“读时模式”。 注:写时模式有利于提升查询性能,因为数据库可以对列进行索引,并对数据进行压缩。但是作为权衡,数据加载会花更多时间。 (3)更新、事物和索引 更新 ...
1. 概述 在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。 本文首先介绍了Hadoop上通常的JOIN实现方 ...
hive引入partition和bucket的概念,中文翻译分别为分区和桶(我觉的不是很合适,但是网上基本都是这么翻译,暂时用这个吧),这两个概念都是把数据划分成块,分区是粗粒度的划分桶是细粒度的划分,这样做为了可以让查询发生在小范围的数据上以提高效率。 分区的作用:使用分区可以加快数据分片的查询速度。 桶的作用:(1)获得更高效的查询处理效率,桶为表加上了额外的结构。           (2)"取样"更高效。在处理大规模数据集时,在开发和修改查询阶段,如果能在数据集的一小部分数据上试进行查询,会带来很多方便。  首先介绍分区的概念,还是先来个例子看下如果创建分区表: c ...
package test; import java.util.Arrays; import java.util.Comparator; public class PrintMinNumber { public static void main(String[] args) { // TODO Auto-generated method stub print(new int[]{12,22,42,32,52,62,72111}); } public static void print(int[] nums){ String[] strs=new String ...
注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取。 注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文件,程序员在编写一个功能时,往往需要在程序文件 ...
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 1 public native int hashCode();   根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方 ...
serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同 ...

poi

 
  package edu.sjtu.erplab.poi; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.poi. ...
类之间的关系 1. 种类: Generalization(泛化),Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(合成关系)。 2.  其中Aggregation(聚合关系)、Composition(合成关系)属于Association(关联关系),是特殊的Association关联 ...
一、final         根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。         final类不能被继承,没有子类,final类中的方法默认是final的。         final方法不能被子类的方法覆盖,但可以被继承。         final成员变量表示常量,只能被赋值一次,赋值后值不再改变。         final不能用于修饰构造方法。         注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默 ...
定义一个数组 int[] a={3,1,4,2,5}; int[] b=a;   数组b只是对数组a的又一个引用,即浅拷贝。   如果改变数组b中元素的值,其实是改变了数组a的元素的值,要实现深度复制,可以用clone或者System.arrayCopy int[] a={3,1,4,2,5}; int[] b=a.clone(); b[0]=10; System.out.println(b[0]+"  "+a[0]); 但是clone和System.arrayCopy都是对一维数组的深度复制。 对于二维数组则不一样: int[][] a={{3,1,4,2,5 ...
1.浅复制与深复制概念 ⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不 复制它所引用的对象。 ⑵深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。 当Class A成员变量类型是java的基本类型时(外加String类型),只要实现如上简单的clone(称影子clone)就可以。但是如果Class A成员变量是数 ...
Global site tag (gtag.js) - Google Analytics