首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改单元表的分区规范并移动数据

问更改单元表的分区规范并移动数据
EN

Stack Overflow用户
提问于 2019-05-18 04:43:31
回答 1查看 430关注 0票数 1

我有一个外部蜂窝表雇员,它由extract_timestamp (yyyy:mm:ss)分隔,如下所示。

代码语言:javascript
复制
empid   empname     extract_time
1       abc         2019-05-17 00:00:00
2       def         2019-05-18 14:21:00

我试图通过extract_time删除分区,并将其更改为年、月和日分区。对此,我遵循以下方法。

1.创建一个新的表employee_new,其分区为年份、月和日

代码语言:javascript
复制
 create external table employee_new
(empid int,
 empname string
)
partitioned by (year int,month int,day int)
location '/user/emp/data/employee_new.txt';

2.通过从employee表中选择数据将覆盖插入到employee_new中

代码语言:javascript
复制
insert overwrite into employee_new as select*,year(extract_time),month(extract_time)
,day(extract_time) 
from employee

/user/emp/data/employee_new.txt 3.删除employee和employee_new并在上创建employee表

请让我知道这种方法是否有效,是否有更好的方法来做同样的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-18 20:17:45

如果可能的话,如果上游进程可以将小时文件写入每日文件夹,则仅由date yyyy-MM-dd分区。对于这样一个小的表分区来说,按年份、月和日分别进行分区似乎太过分了。它仍然是太多的文件夹。如果表按日期yyyy进行分区,分区修剪将适用于您的使用场景,因为您是按日、年或月进行查询。

若要按年份进行筛选,在本例中,您将提供

where date >= '2019-01-01' and date < '2020-01-01'条件

按月过滤:

where date >= '2019-01-01' and date < '2020-02-01'

日:where date = '2019-01-01'

文件系统清单的工作速度要快得多。

如果不可能重新设计上游流程来写入yyyy文件夹,那么您在问题(yyyy/MM/dd文件夹)中描述的新设计是唯一的解决方案。

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

https://stackoverflow.com/questions/56196032

复制
相关文章

相似问题

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