数据库范式(1NF,2NF,3NF,BCNF) 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 范式说明 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一...
impala学习总结 Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。那么Impala如何实现大数据的快速查询呢?在回答这...
数据存储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...
解压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")...
Hive中小表与大表关联(join)的性能分析 经常看到一些Hive优化的建议中说当小表与大表做关联时,把小表写在前面,这样可以使Hive的关联速度更快,提到的原因都是说因为小表可以先放到内存中,然后大表的每条记录再去内存中检测,最终完成关联查询。这样的原因看似合理,但是仔细推敲,又站不住脚跟。 多小的表算小表?如果所谓的小表在内存中放不下怎么办?我用2个只有几条记录的表做关联查询,这应该算是小表了,在查看reduce的执行日志时依然...
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...
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...
hive严格模式 strict模式在下面三种情况下有限制: (1) partition表需要加上分区裁剪 (2) order by 只有一个reduce,需要加上limit (3) join时,如果只有一个reduce,笛卡尔积不支持。 补上几刀:经试验hive 1.6严格模式开启之后,不支持一下两种查询(1)in/not in子查询,使用left join 替换(2)两个分区表...
spark命令行解析与找不到类scopt.OptionParser 问题一:解析spark-submit命令行参数的时候用到了第三方包scopt,该包需要引入<dependency> <groupId>com.github.scopt</groupId> <artifactId>scopt_2.10</artifactId> <version>3.2.0</ve...
spark命令行解析与找不到类scopt.OptionParser 问题一:解析spark-submit命令行参数的时候用到了第三方包scopt,该包需要引入<dependency> <groupId>com.github.scopt</groupId> <artifactId>scopt_2.10</artifactId> <version>3.2.0</ve...
数据分析笔记 (1)去除两个字段相同的重复的记录delete from 表 a where exists (select 1 from 表 where 数据b=a.数据a and 数据a=a.数据b and 数据a<a.数据b)(2)行转列姓名 课程 分数---------- ---------- -----------张三 语文 ...
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'; 时间没...
为什么要用存储过程 存储过程说白了就是一堆 SQL 的合并。中间加了点逻辑控制。但是存储过程处理比较复杂的业务时比较实用。比如说,一个复杂的数据操作。如果你在前台处理的话。可能会涉及到多次数据库连接。但如果你用存储过程的话。就只有一次。从响应时间上来说有优势。也就是说存储过程可以给我们带来运行效率提高的好处。另外,程序容易出现 BUG 不稳定,而存储过程,只要数据库不出现问题,基本上是不会出现什么问题的。也就...
Java实现几种常见排序方法 package test.sort; import java.util.Random; //Java实现的排序类 public class NumberSort { //私有构造方法,禁止实例化 private NumberSort() { super(); } //冒泡法排序 ...
SQL中存储过程和函数的区别 本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2....
SQL中存储过程和函数的区别 本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2....
使用 Hive 作为传统 ELT 工具的替代 Apache Hive 数据仓库软件有助于查询和管理位于分布式存储中的大型数据集。对于 ETL 而言,Hive 是一个强大的工具,而对于 Hadoop,它既是数据仓库,也是 Hadoop 的数据库。不过,相对于传统的数据库,它是相对缓慢的。它没有提供所有的 SQL 特性,甚至没有提供与传统的数据库相同的数据库特性。但它支持 SQL,它的确像一个数据库那样工作,它让更多的人(即使那些不是程序员的人...
Hadoop 目前只是“穷人的 ETL” 虽然企业部署Hadoop大数据系统的最终目的是进行“性感”的分析应用,但是大多数企业距离这一目标还很远很远。根据IDC发布的Hadoop-MapReduce软件生态系统预测报告,Hadoop 市场正在以60%的年复合增长率高速扩张。但是该报告也揭示了一个让人吃惊的事实,作为大数据分析应用的代名词,Hadoop的流行其实与数据分析无关。 实际上大多数采用Hadoop的公司都没有将Hadoop用...
位图应用场合 位图主要用于快速检索关键字状态,通常要求关键字是一个连续的序列(或者关键字是一个连续序列中的大部分),最基本的情况,使用1bit标示一个关键字的状态(可标示两种状态),但根据需要也可以使用2bit(标示4种状态),3bit(标示8种状态),当一个状态标示需要的位数达到32bit时,就演变成来一个整型数组了。 位图的主要应用场合:标示连续(或接近连续,即大部分会出现)的关键字序列的状态(状...
泛型使用注意事项 参数化类型可以引用一个原始类型的对象,编译报告警告,例如, Collection<String> c = new Vector();//可不可以,不就是编译器一句话的事吗? 原始类型可以引用一个参数化类型的对象,编译报告警告,例如, Collection c = new Vector<String>();//...