- 浏览: 57189 次
- 来自: 北京
最新评论
-
x10232:
3+3+4+4
impala学习总结 -
x10232:
一个房子里有椅子,椅子有腿和背,房子与椅子是什么关系,椅子与腿 ...
关联、组合、聚合、依赖关系比较
文章列表
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。
范式说明
1.1 第一范式(1NF)无重复的列
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之
impala学习总结
- 博客分类:
- impala
Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查 ...
1.数据转parquet的后效果
table1为textfile格式存储的表,分区20161122转换之前大小约400M,分别以parquet无压缩,parquet snappy压缩和parquet gzip压缩,转换到parquet格式的表table1_parquet的20161122,20161123,20161124三个分区。
(1)insert into tabl ...
解压parquet格式文件到text
- 博客分类:
- parquet
方法一: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")sqlContext = SQLContext(sc)df = sqlContext.read.parquet(inputpath)df.select('*').save(outpu ...
Hive中小表与大表关联(join)的性能分析
- 博客分类:
- hive
经常看到一些Hive优化的建议中说当小表与大表做关联时,把小表写在前面,这样可以使Hive的关联速度更快,提到的原因都是说因为小表可以先放到内存中,然后大表的每条记录再去内存中检测,最终完成关联查询。这样的原 ...
Hive Map Side Join解析
- 博客分类:
- hive
通常Hadoop在做join策略的时候会有两种方式map-side join(也叫replication join)和reduce-side join(也叫repartition join或者common join)
1. reduce side join
利用了mapreduce框架的sort-merge机制来使得相同key的数据聚合在一起,在map阶段会分别读取输入dataset,然后根据join key来分发每条记录(其他值包装在value中),在reduce阶段读取所有同一个join key对应的所有记录后,就可以做笛卡尔积,然后将结果再emit出去。
2. ...
目前hive不支持 in或not in 中包含查询子句的语法,所以只能通过left join实现。
假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含一个字段,uid。
in查询
如果要查询当天登陆的注册用户,需要用in查询,hive sql如下:
select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is not null
如果login ...
strict模式在下面三种情况下有限制: (1) partition表需要加上分区裁剪 (2) order by 只有一个reduce,需要加上limit (3) join时,如果只有一个reduce,笛卡尔积不支持。
补上几刀:
经试验hive 1.6严格模式开启之后,不支持一下两种查询
(1)in/not in子查询,使用left join 替换
(2)两个分区表关联,where 条件之后只能放主表的分区条件,不能将两个表的分区条件都放where之后
失败的:FROM table1 a LEFT JOIN table2 b on a.id=b.id
...
问题一:解析spark-submit命令行参数的时候用到了第三方包scopt,该包需要引入
<dependency>
<groupId>com.github.scopt</groupId>
<artifactId>scopt_2.10</artifactId>
<version>3.2.0</version>
</dependency>
,引入之后 ...
(1)去除两个字段相同的重复的记录
delete from 表 a where exists (select 1 from 表 where 数据b=a.数据a and 数据a=a.数据b and 数据a<a.数据b)
(2)行转列
姓名 课程 分数
---------- ---------- -----------
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 ...
格式:
select current_date, current_date + interval ' 2days';
错误用法:
select current_date, current_date + interval 2 || ' days'; 报错
select current_date, current_date + interval '2' || ' days'; 时间没变,还是当前时间
正确用法变形:
select current_date, current_date + 2 * interval '1 days';
select current_date, ...
存储过程说白了就是一堆 SQL 的合并。中间加了点逻辑控制。
但是存储过程处理比较复杂的业务时比较实用。比如说,一个复杂的数据操作。如果你在前台处理的话。可能会涉及到多次数据库连接。但如果你用存储过程的话。就只有一次。从响应时间上来说有优势。也就是说存储过程可以给我们带来运行效率提高的好处。另外,程序容易出现 BUG 不稳定,而存储过程,只要数据库不出现问题,基本上是不会出现什么问题的。也就是说从安全上讲,使用了存储过程的系统更加稳定。
数 据量小的,或者和钱没关系的项目不用存储过程也可以正常运作。mysql 的存储过程还有待实际测试。如果是正式项目,建议你用 sql server 或 ...
Java实现几种常见排序方法
- 博客分类:
- Java
package test.sort;
import java.util.Random;
//Java实现的排序类
public class NumberSort {
//私有构造方法,禁止实例化
private NumberSort() {
super();
}
//冒泡法排序
public static void bubbleSort(int[] numbers) {
int temp; // 记录临时中间值
int siz ...
SQL中存储过程和函数的区别
- 博客分类:
- 数据库
本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 3. 存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调 ...
使用 Hive 作为传统 ELT 工具的替代
- 博客分类:
- hadoop
Apache Hive 数据仓库软件有助于查询和管理位于分布式存储中的大型数据集。对于 ETL 而言,Hive 是一个强大的工具,而对于 Hadoop,它既是数据仓库,也是 Hadoop 的数据库。不过,相对于传统的数据库,它是相对缓慢的。它没有提供所有的 SQL 特性,甚至没有提供与传统的数据库相同的数据库特性。但它支持 SQL,它的确像一个数据库那样工作,它让更多的人(即使那些不是程序员的人)可以获得 Hadoop 技术。它提供了一种将非结构化和半结构化数据转化为基于模式的可用数据的方法。要建立一个主数据管理系统?您可以利用 Hive。要建立一个数据仓库?您也可以利用 Hive,但您需要学 ...