首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hive:创建一个表,将数据从日期时间分区表加载到年、月、日分区表。

Hive:创建一个表,将数据从日期时间分区表加载到年、月、日分区表。
EN

Stack Overflow用户
提问于 2019-03-28 13:12:32
回答 1查看 542关注 0票数 0

因此,我有一个表,该表由datetime(dt)划分并存储在S3中,分区如下所示

dt=2019-03-22/ dt=2019-03-23/ dt=2019-03-24/

等等,我想要做的是将数据从这种模式划分为这样的子分区

年份=2019年/月=03/日=22/ 年份=2019年/月=03/日=23/ 年份=2019年/月=03/日=24/

但是我不想修改原始表,所以我创建了一个外部表,它指向S3中的另一个位置,这将是这个新分区模式的位置。我尝试使用(与原始模式相同的模式)创建指向该位置的表。

代码语言:javascript
复制
CREATE EXTERNAL TABLE `test_partition_new`(
 `order_id` string, 
 `outlet_code` string, 
 . 
 . 
 . 
 .
 `business_date` string, 
  . 
  .
  .
  .
 )
  PARTITIONED BY ( 
 `year` string, 
 `month` string, 
 `day` string)
  ROW FORMAT SERDE 
 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
  STORED AS INPUTFORMAT 
 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
  OUTPUTFORMAT 
 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
  LOCATION
 's3://data-test/test_partition/db.new_partition/'
  TBLPROPERTIES (
 'orc.compress'='SNAPPY', 
 )

它将分别按年、月和日划分。因此,据我所知,我应该将原始表中的数据插入到这个表中。如何将数据插入到这个新表中,该表的分区日期来自“business_date”列,该列包含'2019-03-20‘这样的数据。是否有任何函数可以将该列分隔为包含年份、月份和日期的三列?

EN

回答 1

Stack Overflow用户

发布于 2019-03-28 13:21:57

如果日期格式一致,则可以将其拆分为3列并加载。

代码语言:javascript
复制
INSERT INTO `test_partition_new` PARTITION(year,month,day)
SELECT --cols to select 
      ,SPLIT(business_date,'-')[0] --year
      ,SPLIT(business_date,'-')[1] --month
      ,SPLIT(business_date,'-')[2] --day
FROM ORIGINAL_TABLE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55398522

复制
相关文章

相似问题

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