当前位置:  开发笔记 > 大数据 > 正文

雅典娜表具有多个位置

如何解决《雅典娜表具有多个位置》经验,为你挑选了1个好方法。

我的数据分布在多个目录和这些目录中的多个制表符分隔的文件中。总体结构如下所示:

s3://bucket_name/directory/{year}{month}/{iso_2}/{year}{month}{day}_table.bcp.gz

其中{year}是4位数字的年份,{month}是2位数字的月份,{day}是2位数字的日期,并且{iso_2}是ISO2国家/地区代码。

如何在Athena中将其设置为表格?



1> belostoky..:

Athena使用Hive DDL,因此您只需要运行一个普通的Hive create语句:

CREATE EXTERNAL TABLE table_name(
  col_1 string,
...
  col_n string)
PARTITIONED BY (
   year_month string,
   iso_2 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 's3://bucket_name/directory/';

然后通过运行将这些目录注册为所需表的新分区MSCK REPAIR TABLE table_name。如果由于某种原因失败(有时在Athena中这样做),则需要为现有目录运行所有添加分区语句:

ALTER TABLE table_name ADD PARTITION 
     (year_month=201601,iso=US) LOCATION 's3://bucket_name/directory/201601/US/'; 
ALTER TABLE table_name ADD PARTITION 
     (year_month=201602,iso=US) LOCATION 's3://bucket_name/directory/201602/US/';
ALTER TABLE table_name ADD PARTITION 
     (year_month=201601,iso=GB) LOCATION 's3://bucket_name/directory/201601/GB/';
etc.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有