首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Partition和Bucket ORC表

Partition和Bucket ORC表
EN

Stack Overflow用户
提问于 2016-08-08 16:44:32
回答 2查看 5.5K关注 0票数 1

我知道当您创建ORC表时,它将显著提高速度。但是,我们可以通过对ORC表进行分区和分页来进一步改进它吗?如果是这样的话,如何在现有的ORC表中进行分区和分组?

EN

回答 2

Stack Overflow用户

发布于 2016-08-08 17:27:44

您可以对ORC表进行存储桶和分区。

分区直接映射到HDFS中的目录。您可以更改表和添加分区。你将不得不做分区恢复后你。这里已经很好地解释了一切:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterPartition

就我个人而言,我会使用动态分区创建新表,并将数据复制到新表中。

票数 1
EN

Stack Overflow用户

发布于 2018-08-04 04:32:14

分区和分页是用于帮助提高查询性能的功能。在Hive中,正如Karol所解释的那样,分区被映射到hdfs目录结构,分区的方式完全由查询需求和模式驱动。例如

customer_purchases表存储了过去2-3年的所有事务(大约1-2PB的数据)。一位分析师正试图回答“按月计算,2017年第一季度发生了多少销售额?”

不带分区的

customer_purchases表架构

transaction_id | cust_id | price_per_unit | units_purchased | invoiceDate

样本数据集

代码语言:javascript
复制
1,CustomerId-32,3.24,91,2017-10-19
2,CustomerId-16,3.24,88,2017-10-14
3,CustomerId-3,1.96,99,2017-10-14
4,CustomerId-95,1.96,38,2017-10-17
5,CustomerId-51,1.32,39,2017-10-18
6,CustomerId-29,1.32,14,2017-10-14
7,CustomerId-15,3.88,66,2017-10-19
8,CustomerId-74,1.32,44,2017-10-17
9,CustomerId-43,3.88,22,2017-10-18

Stored as csvs in hdfs://your-nn/your-path/data*.csv

SELECT month(invoiceDate),count(*) FROM customer_purchases WHERE YEAR(invoiceDate) = '2017‘,MONTH(invoiceDate)按月分组(InvoiceDate),介于1到3之间

上面的语句执行整个表扫描,以执行过滤(where)和聚合(group by)。这是低效的,因为我们只需要数据集的一小部分。

具有分区

我们可以推断,分区更多地基于时间序列,因为存在日期范围。为了避免全表扫描,我们可以创建一个更基于月份的分区。以下是更改

customer_purchases表架构(分区列'yr‘和'mon')

transaction_id | cust_id | price_per_unit | units_purchased | invoiceDate | mon

相同的数据以hdfs ://your-nn/your-path/ data *.csv的形式存储在hdfs中,其中是yyyy格式的年份,是1到12 (1月到12月)之间的任意值。

具有新的hdfs结构和配置单元表架构结构。该查询将为

从customer_purchases中选择mon,count(*),其中yr='2017‘,mon按mon在1和3之间分组

上面查询的解释计划现在将只扫描yr=2017目录以及mon=1、mon=2和mon=3子目录下的文件。这是一个很小的数据集,您可以更快地返回结果。

根据ORC文件格式,除了hdfs位置中的文件将是.orc而不是.csv之外,没有任何变化。

BUCKETING添加了对特定文件中的事务进行分组。

这回答了你的问题吗?

DYNAMIC PATITIONING有助于根据表中的输入事务数据自动执行分区。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38824760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档