`

HIVE 第八章 schema

阅读更多

 

 

schema设计

hive pattern && hive anti-pattern

 

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

create table supply(id int,part string,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 and amazon 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 where action='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 table1 partition(day=20120102).但是需要删除这个中间换转者partition

 

5.bucketing table data storage

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

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

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

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

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

insert overwrite table weblog partition(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(version long,url string) partitioned by (hit_data int) row format delimited fields terminated by '\t'

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

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

 

7.(almost)always use compression

 

 

分享到:
评论

相关推荐

    hive-json-schema最新源代码

    hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema最新源代码hive-json-schema...

    python导出hive数据表的schema实例代码

    主要介绍了python导出hive数据表的schema实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    大数据Hadoop第八章hive

    大数据Hadoop第八章hive

    《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf

    《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第...

    Hive编程指南中文版

    第8章 HiveQL:索引 第9章 模式设计 第10章 调优 第11章 其他文件格式和压缩方法 第12章 开发 第13章 函数 第14章 Streaming 第15章 自定义Hive文件和记录格式 第16章 Hive的Thrift服务 第17章 存储处理程序和NoSQL ...

    hive

    hive hive hive hive hive hive hive hive hive hive hive hive

    hive元数据mysql初始化导入

    通过mysql> source XXXXX\hive-schema-3.1.0.mysql.sql初始化元数据

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

    hive练习数据和练习题及答案

    hive练习数据和hive练习题包含了hive练习数据,hive数据的建表ddl和hive练习题,非常适合做hive练习,新手培训,快速入门等; 包含以下练习: hive的group by 和集合函数 hive的Order By/Sort By/Distribute By Join...

    hive-jdbc hive jdbc驱动

    hive-jdbc

    Hive Succinctly

    Hive allows you to take data in Hadoop, apply a fixed external schema, and query the data with an SQL-like language. With Hive, complex queries can yield simpler, more effectively visualized results. ...

    Hive使用手册Hive使用手册

    目录 1 Hive 概念与连接使用: 2 2 Hive支持的数据类型: 2 2.1原子数据类型: 2 2.2复杂数据类型: 2 2.3 Hive类型转换: 3 ...8 加载数据 5 9表连接 6 10 子查询 6 11 UNION ALL 6 12 Hive使用注意点: 6 13 Hive优化 9

    Hive表生成工具,Hive表生成工具Hive表生成工具

    Hive表生成工具,Hive表生成工具Hive表生成工具

    第6章:Hive性能优化及Hive3新特性1

    第6章:Hive性能优化及Hive3新特性课程学习目标掌握Hive中分区表及分桶表的设计及优化实现了解Hive中索引的设计及应用场景掌握Hive中文件格式与数据

    第14章 基于Hadoop的数据仓库Hive

    本章首先介绍了数据仓库的概念、Hive的基本特征、与其他组件之间的关系、与传统数据库的区别以及它在企业中的具体应用;接着详细介绍了Hive的系统架构,包括基本组成模块、工作原理和几种外部访问方式,描述了Hive的...

    Hive.sql,hive的元数据

    Hive.sql

    hive-3.1.1安装包

    Hive是一个基于Hadoop的数据仓库工具,它本身并不存储数据,部署在Hadoop集群上,数据是存储在HDFS上的. Hive所建的表在HDFS上对应的是一个文件夹,表的内容对应的是一个文件。它不仅可以存储大量的数据而且可以对...

    第8章基于Hadoop的数据仓库Hive作业.pptx

    第8章基于Hadoop的数据仓库Hive作业.pptx

Global site tag (gtag.js) - Google Analytics