分区 & 分桶

都是把数据划分成块。分区是粗粒度的划分,桶是细粒度的划分,这样做为了可以让查询发生在小范围的数据上以提高效率。

  • 分区之后,分区列都成了文件目录,从而查询时定位到文件目录,子数据集而提高查询效率。

  1. 创建:
create table zyy_table (id int,name string)
clustered by (id) into 4 buckets;

clustered by (...) into (...)  buckets  声明分桶列和桶的个数。

hive会计算记录的哈希值,对桶的个数取模,来决定记录属于哪个桶 。

set hive.enforce.bucketing=true –- 必须设置这个数据,hive才会按照你设置的桶的个数去生成数据

hive> dfs -ls /user/hive/warehouse/zyy_table;    -- 可以查询桶文件

drwxrwxr-x+  1 hive hive        111 2016-07-28 19:30 /user/hive/warehouse/test.db/zyy_table/000000_0
drwxrwxr-x+ 2 hive hive 120 2016-07-28 19:41 /user/hive/warehouse/test.db/zyy_table/000000_1
-rwxrwxr-x+ 3 hive hive 148 2016-07-28 19:41 /user/hive/warehouse/test.db/zyy_table/000000_2

对示例数据进行查询:

— 带桶的表
select * from zyy_table tablesample(bucket 1 out of 4 on id);

tablesample 可以让查询发生在一部分桶上,而不是普通表的查询(使用rand() 函数,在整个数据集上检索)

parquet

http://www.infoq.com/cn/articles/in-depth-analysis-of-parquet-column-storage-format/

面向分析型业务的列式存储格式。

列式存储相比于行式存储的优势:

1. 可以跳过不符合条件的数据,降低IO

2. 压缩编码,节省空间。同一列数据类型一样,可以高效压缩。

3. 只读取需要的列,支持向量运算,扫描更有效率。

Parquet的优势:

日志结构是复杂的嵌套数据类型,而不同的计算框架需要对这些数据做分析和挖掘,存储和访问很重要。paquet就是既支持关系型数据类型,又能支持嵌套类型的存储格式,

同时适配多种数据处理框架(MapReduce, Hive, Pig)。

关系型数据的列式存储很简单,一列列排列下来;

嵌套型的列存储有些复杂。一个record中的column可以是Int Long,String 也可以是List, Map,Set 这样。(具体需深入)

Hive 的分桶 & Parquet 概念的更多相关文章

  1. Hive的分桶表

    [分桶概述] Hive表分区的实质是分目录(将超大表的数据按指定标准细分到指定目录),且分区的字段不属于Hive表中存在的字段:分桶的实质是分文件(将超大文件的数据按指定标准细分到分桶文件),且分桶的 ...

  2. Hive分区和桶的概念

    Hive 已是目前业界最为通用.廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能.稳定性等方面来说,Hive 的地位尚不可撼动. 其实这篇博文主要是想聊聊 S ...

  3. hive,分桶,内外部表,分区

    简单的word-count操作: [root@master test-map]# head -10 The_Man_of_Property.txt    #先看看数据Preface“The Forsy ...

  4. hive的分桶

    套话之分桶的定义: 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储.对于 hive 中每一个表.分区都可以进一步进行分桶. 列的哈希值除以桶的个数来决定每条数据划分在哪个桶中.(网上其它定 ...

  5. hive的分桶原理

    套话之分桶的定义: 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储.对于 hive 中每一个表.分区都可以进一步进行分桶. 列的哈希值除以桶的个数来决定每条数据划分在哪个桶中.(网上其它定 ...

  6. Hive 学习之路(五)—— Hive 分区表和分桶表

    一.分区表 1.1 概念 Hive中的表对应为HDFS上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为HDFS上表目录的子目录,数据按照分区存储在子目录中.如 ...

  7. Hive 系列(五)—— Hive 分区表和分桶表

    一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子 ...

  8. Hive SQL之分区表与分桶表

    Hive sql是Hive 用户使用Hive的主要工具.Hive SQL是类似于ANSI SQL标准的SQL语言,但是两者有不完全相同.Hive SQL和Mysql的SQL方言最为接近,但是两者之间也 ...

  9. 入门大数据---Hive分区表和分桶表

    一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子 ...

随机推荐

  1. bzoj2286 消耗战

    还是虚树的题目啊... 如果只有一个询问,我们这么考虑,可以设dp[x]为只删除x子树内和x到父亲的边,使得x这棵子树内的能源岛屿都与x的父亲不连通的最小花费. 这样如果x本身是能源岛屿,那么dp[x ...

  2. Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录

    Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...

  3. Native code on Windows Phone 8(转)

    Windows Phone 8 introduces the ability to use native code to implement Windows Phone. In this sectio ...

  4. java:使用匿名类直接new接口

    java中的匿名类有一个倍儿神奇的用法,见下面代码示例: package contract; public interface ISay { void sayHello(); } 上面是一个简单的接口 ...

  5. 关于lazyload插件的一些笔记

    Lazy Load Plugin for jQuery 需要引入 jQuery,兼容各种 IE,适合 PC 端使用.详细 API 可以参考 http://www.appelsiini.net/proj ...

  6. byte[] 转字符串 中文乱码

    闲来无事,写了一个UWP的UDP/TCP小Demo,网上找了个网络调试助手,就兴冲冲的开始玩耍 结果“鸡同鸭讲”: 讲英文的时候大家都是abc,hello man!how are you? 讲中文的时 ...

  7. mac下CornerstoneSVN出错 Description : The working copy is locked due to a previous error

    使用CornerStone工具update最新SVN代码报错:The working copy is locked due to a previous error,不仅无法上传,也无法更新,错误提示被 ...

  8. android animation中的参数interpolator详解

      android:interpolator interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以 accelerated(加速),decelerated(减速), ...

  9. list转datatable

    /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name="list&q ...

  10. Android几种打开SQLite的方法

    第一种:用SQLiteOpenHelper辅助类 SQLiteOpenHelper类可以用来创建或打开数据库,两个关键的方法:onCreate(SQLiteDatabase db)和onUpgrade ...