Hive 的分桶 & Parquet 概念
2016-07-28 20:01
411 查看
分区 & 分桶
都是把数据划分成块。分区是粗粒度的划分,桶是细粒度的划分,这样做为了可以让查询发生在小范围的数据上以提高效率。分区之后,分区列都成了文件目录,从而查询时定位到文件目录,子数据集而提高查询效率。
桶
创建:
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. 可以跳过不符合条件的数据,降低IO2. 压缩编码,节省空间。同一列数据类型一样,可以高效压缩。
3. 只读取需要的列,支持向量运算,扫描更有效率。
Parquet的优势:
日志结构是复杂的嵌套数据类型,而不同的计算框架需要对这些数据做分析和挖掘,存储和访问很重要。paquet就是既支持关系型数据类型,又能支持嵌套类型的存储格式,同时适配多种数据处理框架(MapReduce, Hive, Pig)。
关系型数据的列式存储很简单,一列列排列下来;
嵌套型的列存储有些复杂。一个record中的column可以是Int Long,String 也可以是List, Map,Set 这样。(具体需深入)
相关文章推荐
- input文本框中value值有双引号的问题
- 高精度运算-424 integer inquiry
- 玩转iOS开发:《使用系统自定义UIActivity进行内容分享》
- 虚幻4 制作UI粒子系统插件
- easyUI前后台分页代码实现
- STL学习之路(一) deque
- 虚幻4 创建选择资源的UI
- easyui
- Required field 'sessionHandle is unset !’
- 解决macro "__TIME__" might prevent reproducible builds [-Werror=date-time]错误
- tornado RequestHandler request.body & request.arguments
- Method to remove Tablet nav
- java语言基础入门——String、StringBuffer、StringBuilder的比较
- Error in XmlSqlMapClientBuilder. Alias name conflict occurred.
- easyui的导入和使用
- UIScrollView下拉实现图片放大或缩小
- IOS-- UIView中的坐标转换
- 基于口令和证书认证(TrueLicense)的接口调用工具库的封装设计 By 嗡汤圆
- 点击图片实现放大或缩小
- 【HDU】2604 - Queuing(递推 & 思维 & 矩阵构造 & 快速幂)