自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库范式(1NF,2NF,3NF,BCNF)

数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 范式说明 1.1 第一范式(1NF)无重复的列     所谓第一范式(1NF)是指数据库表的每一...

2017-02-21 08:54:59 173

原创 impala学习总结

 Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。那么Impala如何实现大数据的快速查询呢?在回答这...

2016-12-19 19:08:21 432

原创 数据存储text转parquet及引发的OOM问题

1.数据转parquet的后效果 table1为textfile格式存储的表,分区20161122转换之前大小约400M,分别以parquet无压缩,parquet snappy压缩和parquet gzip压缩,转换到parquet格式的表table1_parquet的20161122,20161123,20161124三个分区。(1)insert into table1_p...

2016-12-04 21:59:56 842

解压parquet格式文件到text

方法一:spark python实现import sysfrom pyspark import SparkConf, SparkContextfrom pyspark.sql import SQLContextinputpath=sys.argv[1]outputpath=sys.argv[2]sc = SparkContext(appName="Transform Pq to Csv")...

2016-11-15 13:30:22 2762

原创 Hive中小表与大表关联(join)的性能分析

经常看到一些Hive优化的建议中说当小表与大表做关联时,把小表写在前面,这样可以使Hive的关联速度更快,提到的原因都是说因为小表可以先放到内存中,然后大表的每条记录再去内存中检测,最终完成关联查询。这样的原因看似合理,但是仔细推敲,又站不住脚跟。 多小的表算小表?如果所谓的小表在内存中放不下怎么办?我用2个只有几条记录的表做关联查询,这应该算是小表了,在查看reduce的执行日志时依然...

2016-10-26 14:13:19 1615 1

原创 Hive Map Side Join解析

通常Hadoop在做join策略的时候会有两种方式map-side join(也叫replication join)和reduce-side join(也叫repartition join或者common join) 1.  reduce side join 利用了mapreduce框架的sort-merge机制来使得相同key的数据聚合在一起,在map阶段会分别读取输入dat...

2016-10-26 14:08:17 378

原创 hive in/not in替换以及hive join优化

目前hive不支持 in或not in 中包含查询子句的语法,所以只能通过left join实现。假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含一个字段,uid。 in查询如果要查询当天登陆的注册用户,需要用in查询,hive sql如下:select login.uid fr...

2016-10-26 13:31:58 6205 1

原创 hive严格模式

strict模式在下面三种情况下有限制: (1) partition表需要加上分区裁剪 (2) order by 只有一个reduce,需要加上limit (3) join时,如果只有一个reduce,笛卡尔积不支持。         补上几刀:经试验hive 1.6严格模式开启之后,不支持一下两种查询(1)in/not in子查询,使用left join 替换(2)两个分区表...

2016-10-25 17:28:27 124

原创 spark命令行解析与找不到类scopt.OptionParser

问题一:解析spark-submit命令行参数的时候用到了第三方包scopt,该包需要引入<dependency> <groupId>com.github.scopt</groupId> <artifactId>scopt_2.10</artifactId> <version>3.2.0</ve...

2016-10-12 16:56:08 1882

原创 数据分析笔记

 (1)去除两个字段相同的重复的记录delete from 表 a where exists (select 1 from 表 where 数据b=a.数据a and 数据a=a.数据b and 数据a<a.数据b)(2)行转列姓名 课程 分数---------- ---------- -----------张三 语文 ...

2016-08-08 19:06:29 259

原创 PostGre/GreenPlum中interval在循环中的使用

格式:select current_date, current_date + interval ' 2days';错误用法:select current_date, current_date + interval  2 || ' days';  报错select current_date, current_date + interval  '2' || ' days'; 时间没...

2016-08-08 16:35:00 1840

原创 为什么要用存储过程

存储过程说白了就是一堆 SQL 的合并。中间加了点逻辑控制。但是存储过程处理比较复杂的业务时比较实用。比如说,一个复杂的数据操作。如果你在前台处理的话。可能会涉及到多次数据库连接。但如果你用存储过程的话。就只有一次。从响应时间上来说有优势。也就是说存储过程可以给我们带来运行效率提高的好处。另外,程序容易出现 BUG 不稳定,而存储过程,只要数据库不出现问题,基本上是不会出现什么问题的。也就...

2016-07-19 16:33:05 100

原创 Java实现几种常见排序方法

package test.sort; import java.util.Random; //Java实现的排序类 public class NumberSort { //私有构造方法,禁止实例化 private NumberSort() { super(); } //冒泡法排序 ...

2016-02-24 11:22:36 136

原创 SQL中存储过程和函数的区别

本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。      函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少       1.    一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。       2....

2015-09-28 15:56:34 448

原创 使用 Hive 作为传统 ELT 工具的替代

Apache Hive 数据仓库软件有助于查询和管理位于分布式存储中的大型数据集。对于 ETL 而言,Hive 是一个强大的工具,而对于 Hadoop,它既是数据仓库,也是 Hadoop 的数据库。不过,相对于传统的数据库,它是相对缓慢的。它没有提供所有的 SQL 特性,甚至没有提供与传统的数据库相同的数据库特性。但它支持 SQL,它的确像一个数据库那样工作,它让更多的人(即使那些不是程序员的人...

2015-09-28 15:32:28 573

原创 Hadoop 目前只是“穷人的 ETL”

虽然企业部署Hadoop大数据系统的最终目的是进行“性感”的分析应用,但是大多数企业距离这一目标还很远很远。根据IDC发布的Hadoop-MapReduce软件生态系统预测报告,Hadoop 市场正在以60%的年复合增长率高速扩张。但是该报告也揭示了一个让人吃惊的事实,作为大数据分析应用的代名词,Hadoop的流行其实与数据分析无关。 实际上大多数采用Hadoop的公司都没有将Hadoop用...

2015-09-28 15:25:29 199

原创 位图应用场合

位图主要用于快速检索关键字状态,通常要求关键字是一个连续的序列(或者关键字是一个连续序列中的大部分),最基本的情况,使用1bit标示一个关键字的状态(可标示两种状态),但根据需要也可以使用2bit(标示4种状态),3bit(标示8种状态),当一个状态标示需要的位数达到32bit时,就演变成来一个整型数组了。 位图的主要应用场合:标示连续(或接近连续,即大部分会出现)的关键字序列的状态(状...

2015-09-17 17:08:31 1826

原创 泛型使用注意事项

   参数化类型可以引用一个原始类型的对象,编译报告警告,例如,          Collection<String> c = new Vector();//可不可以,不就是编译器一句话的事吗?          原始类型可以引用一个参数化类型的对象,编译报告警告,例如,          Collection c = new Vector<String>();//...

2015-09-17 09:06:57 190

原创 详细总结 Hive VS 传统关系型数据库

重点区别:(1)hive是数据仓库,传统数据库是关系型数据库。(2)读时模式vs写时模式在传统数据库里,表的模式是在数据加载的时候强制确定的。如果在数据加载时发现数据不符合模式,则拒绝加载。因为数据是在写入数据库时对照模式进行检查,因此这一设计有时被称为“写时模式”。(它需要读取数据,然后进行“解析”,再进行序列化以数据库内部格式存入磁盘)另一方面,Hive对数据的验证并不在加...

2015-09-07 17:36:21 1014

原创 MapReduce 中的两表 join 几种方案简介

[size=large][b] 1. 概述[/b][/size]在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。本文首先介绍了Hadoop上通常的JOIN实现方法,然后给出了几种针对不同输入数据集的优化方法。[size=large...

2015-09-07 17:25:12 121

原创 hive学习—分区、分桶和索引

hive引入partition和bucket的概念,中文翻译分别为分区和桶(我觉的不是很合适,但是网上基本都是这么翻译,暂时用这个吧),这两个概念都是把数据划分成块,分区是粗粒度的划分桶是细粒度的划分,这样做为了可以让查询发生在小范围的数据上以提高效率。[b]分区的作用:使用分区可以加快数据分片的查询速度。桶的作用:(1)获得更高效的查询处理效率,桶为表加上了额外的结构。 ...

2015-09-07 16:52:55 161

原创 把整数排成最小的数

[code="java"]package test;import java.util.Arrays;import java.util.Comparator;public class PrintMinNumber { public static void main(String[] args) { // TODO Auto-generated method stub ...

2015-08-27 15:51:46 123

原创 Spring的注解配置与XML配置之间的比较

[size=large][b]注释配置相对于 XML 配置具有很多的优势:[/b][/size][b]它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。[/b]如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名、类型等信息,如果关系表字段和 PO 属性名、类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反...

2015-08-08 21:00:21 139

原创 equals方法和hashCode方法

哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:1public native int hashCode();  根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。  为何Object类需要这样一个方法?它有什么作用呢?今天我们就...

2015-08-01 10:38:44 77

原创 Serializable serialVersionUID

serialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...

2015-08-01 09:31:37 159

原创 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...

2015-07-31 13:53:54 59

原创 关联、组合、聚合、依赖关系比较

类之间的关系 1. 种类: Generalization(泛化),Dependency(依赖关系)、Association(关联关系)、Aggregation(聚合关系)、Composition(合成关系)。 2.  其中Aggregation(聚合关系)、Composition(合成关系)属于Association(关联关系),是特殊的Association关联关系。 3.  Generali...

2015-07-29 23:46:21 95

原创 Java关键字final、static使用总结

一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 fina...

2015-07-29 23:41:08 68

原创 Java对数组的复制

定义一个数组[code="java"]int[] a={3,1,4,2,5}; int[] b=a; [/code] 数组b只是对数组a的又一个引用,即浅拷贝。  如果改变数组b中元素的值,其实是改变了数组a的元素的值,要实现深度复制,可以用clone或者System.arrayCopy[code="java"]int[] a={3,1,4,2,5};int[] b=a...

2015-07-27 22:22:59 123

原创 JAVA深复制(深克隆)与浅复制(浅克隆)

1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,...

2015-07-27 16:50:44 73

原创 JVM类加载器(双亲委托模型)

[b][size=large]JVM类加载器(双亲委托模型)[/size][/b](1)类加载器的父委托机制:优先使用父类加载器加载需要使用的类。(2)BootStrap ClassLoader----JRE/lib Extension ClassLoader------JRE/ext/lib System ClassLoader ---------ClassPath各个加...

2015-07-25 21:11:18 129

原创 深入理解Java对象序列化

关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了Thinking in Java, Effective Java,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助。...

2015-07-25 17:01:38 67

原创 Hadoop调优总结

[size=large]1. 管理员角度主要在四方面进行调优[/size] (1) 硬件选择、 (2)操作系统参数调优、 (3)jvm参数调优、 (4)hadoop参数调优。[size=large]2.操作系统调优[/size](1).增大同时打开的文件描述符合网络连接上限。管理员在启动hadoop集群时,应使用ulimit命令将允许同时打开的文...

2015-07-25 14:12:56 112

原创 利用SQOOP将数据从数据库导入到HDFS

基本使用 如下面这个shell脚本: #Oracle的连接字符串,其中包含了Oracle的地址,SID,和端口号 CONNECTURL=jdbc:oracle:thin:@20.135.60.21:1521:DWRAC2 #使用的用户名 ORACLENAME=kkaa #使用的密码 ORACLEPAS...

2015-07-25 14:10:11 1620

原创 POI读取Excel时对cell中数据的判断

[size=large]Iterate over cells, with control of missing / blank cells[/size]In some cases, when iterating, you need full control over how missing or blank rows and cells are treated, and you need ...

2015-07-24 10:12:01 1774

原创 POI读取Excel时数据类型转换的问题

1. 数值类型处理 通过POI取出的数值默认都是double,即使excel单元格中存的是1,取出来的值也是1.0,这就造成了一些问题,如果数据库字段是int,那么就会wrong data type,所以需要对数值类型处理。[code="java"] Cell cell = null;// 单元格 Object inputValue = null;...

2015-07-24 09:44:29 3462

原创 hadoop

sdfsdfsd :oops:

2015-07-21 13:49:37 100

空空如也

空空如也

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

TA关注的人

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