hive schema详解

schema设计

hive pattern && hiveanti-pattern

1.Table by day 按照天分割数据,在relation中,这个参数不推荐,在hive中使用

create table supply(id int,partstring,quantity int) partitioned by (int day)

alter table supply add partition(day=20120102)

partition的负面影响:

1.namenode limition

但是partition产生的子目录,子文件都会保存在hdfs中,namenode会存在内存中,所以这得负面效果是namenode的filesystem的容量上限(hadoop has this upper limit on the total number
of file,mapr andamazon s3 don‘t have this limitation)

2.一个job分解成几个task,每个task是一个jvm实例,每一个file对应一个独立的task,每个task是jvm中独立的一个实例(进程),过多的实例会给jvm压力(start
up and tear down),这使得计算速度降低

因此不能有太多partition,每个文件要尽可能的大

一个好的table by day的设计,是设计出相似大小的数据在不同的时间间断,时间间断可以适当增大。同时保证每个file大于filesystem block size。目的是让partition足够的大。另一种方法,是用多维度的partition分解数据。

2.unique keys and normalization 主键,格式化数据

关系数据库最爱用地策略,但是在hive中没有这种概念。因为hive可以存储denormalized data非格式化的数据,如array,map,struct。这样可以避免one-to-many的关联关系,加快了io速度。但是也pay the penalty
of denormalization,比如数据复制,数据不一致的概率

3.making multiple passes over the same data 同数据源的操作优化

insert overwrite table sales

select * from history whereaction=‘purchased‘;

insert overwrite table credits

select * from history where action=‘returned‘;

from history

insert overwrite sales select *where action=‘purchased‘

insert overwrite credits select *where action = ‘returned‘

4.the case for partitioning every table

为了避免job fail而使得数据被删除,在insert数据的时候可以使用table pardae table1partition(day=20120102).但是需要删除这个中间换转者partition

5.bucketing table data storage

当table没有明显的partition特征时,或是减轻filesystem的负担,可以使用bucketing,他的优点是不会随着增加数据使得文件个数变动,而且对于取样sample是很容易的,对于一些joins操作也比较便利。

create table weblog(user_idint,url string,source_ip string) partition by (dt string) clustered by(user_id) into 96 buckets;

为了生成正确个数的reducer对应hash出得bucket

在查询的时候设置 sethive.enforce.bucketing=true;

from raw_logs或是设置reduce数直接等于bucket数set
mapred.reduce.tasks=96

insert overwrite table weblogpartition(dt=‘2009-02-25‘) select user_id,url,source_ip where dt=‘2009-02-25‘

6.adding colums to a table

hive是没有格式化的数据仓库,随着数据需求可以增加一列,数据少于期待列数,则填补null,数据多于,则舍弃。

create table weblogs(versionlong,url string) partitioned by (hit_data int) row format delimited fieldsterminated by ‘\t‘

加载数据,可以用int补上缺少的数据

load data local inpath ‘log1.txt‘int weblogs partition(20110101)

7.(almost)always use compression

时间: 2024-11-13 01:32:56

hive schema详解的相关文章

Schema详解

XML Schema 简介 XSD 为何使用 XML Schema 是基于 XML 的 DTD 替代者. XML Schema 可描述 XML 文档的结构. XML Schema 语言也可作为 XSD(XML Schema Definition)来引用. 在继续学习之前,您需要对下面的知识有基本的了解: HTML / XHTML XML 以及 XML 命名空间 对 DTD 的基本了解 XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD. XML Schema: 定义可出

HIVE 配置文件详解

hive的配置: hive.ddl.output.format:hive的ddl语句的输出格式,默认是text,纯文本,还有json格式,这个是0.90以后才出的新配置: hive.exec.script.wrapper:hive调用脚本时的包装器,默认是null,如果设置为python的话,那么在做脚本调用操作时语句会变为python <script command>,null的话就是直接执行<script command>: hive.exec.plan:hive执行计划的文件

Hive命令详解

http://blog.itpub.net/22778222/viewspace-1119892/  官方文档翻译 http://blog.csdn.net/hguisu/article/details/7256833 http://www.cnblogs.com/linjiqin/archive/2013/03/05/2944510.html 有很多实例 row format delimited fields terminated by '\t':是我们的文件中列之间的分隔符,设置这个之后,我

hive参数详解

第一部分:Hive 参数hive.exec.max.created.files说明:所有hive运行的map与reduce任务可以产生的文件的和默认值:100000 hive.exec.dynamic.partition说明:是否为自动分区默认值:falsehive.mapred.reduce.tasks.speculative.execution说明:是否打开推测执行默认值:truehive.input.format说明:Hive默认的input format默认值: org.apache.h

hive查询详解

查询的一些例子: 1.queryhive> SELECT name,subordinates[0] FROM employees;John Doe Mary SmithMary Smith Bill KingTodd Jones NULL2.expressionhive> SELECT upper(name),salary, deductions["Federal Taxes"],round(salary * (1 -deductions["Federal Tax

SQL SERVER 中的Schema详解

以往 SQL Server 内的对象命名是"服务器.数据库.用户名.对象",但新版的对象命名改为"服务器.数据库.Schema.对象".这让你规划数据库对象命名时更有弹性. 架构是形成单个命名空间的数据库实体的集合.命名空间是一个集合,其中每个元素的名称都是唯一的. 虽然 SQL Server 2000 包含 CREATE SCHEMA 语句,但实际上并不会像上面所定义的那样创建架构.在 SQL Server 2000 中,数据库用户和架构是隐式连接在一起的.每个数

hive join详解

语法 join_table: table_referenceJOIN table_factor [join_condition] | table_reference{LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition | table_reference[url=]LEFT SEMIJOIN[/url]  table_reference join_condition table_reference: table_factor |

Hive函数详解与案列实战

1.Hive系统内置函数 1.1.数值计算函数 1.取整函数: round 语法: round(double a)返回值: BIGINT说明: 返回double类型的整数值部分 (遵循四舍五入) hive> select round(3.1415926) from tableName; 3 hive> select round(3.5) from tableName; 4 hive> create table tableName as select round(9542.158) fro

Web Service笔记(三):wsdl 与 soap协议详解

注:1.结合Web Service笔记(二):利用CXF开发Web Service 一.WSDL语言:(web service definition language - web service定义语言) (一)简介: 1.wsdl 是全完基于xml 的,特别是xml schema.详见: XML学习笔记(三):XML规范:Schema详解. 2.wsdl 文档描述了 ws 主要的3个方面: 1)WHATA:该 ws 包含"什么"操作,即有几个方法. 2)HOW:该 ws 的操作应该&