我正在使用配置单元(带有外部表)来处理存储在 amazon S3 上的数据。
我的数据分区如下:
DIR s3://test.com/2014-03-01/
DIR s3://test.com/2014-03-02/
DIR s3://test.com/2014-03-03/
DIR s3://test.com/2014-03-04/
DIR s3://test.com/2014-03-05/
s3://test.com/2014-03-05/ip-foo-request-2014-03-05_04-20_00-49.log
s3://test.com/2014-03-05/ip-foo-request-2014-03-05_06-26_19-56.log
s3://test.com/2014-03-05/ip-foo-request-2014-03-05_15-20_12-53.log
s3://test.com/2014-03-05/ip-foo-request-2014-03-05_22-54_27-19.log
如何使用hive创建分区表?
CREATE EXTERNAL TABLE test (
foo string,
time string,
bar string
) PARTITIONED BY (? string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LOCATION 's3://test.com/';
有人可以回答这个问题吗?谢谢!
最佳答案
首先从正确的表定义开始。在你的情况下,我将只使用你写的内容:
CREATE EXTERNAL TABLE test (
foo string,
time string,
bar string
) PARTITIONED BY (dt string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LOCATION 's3://test.com/';
默认情况下,Hive 期望分区位于通过约定 s3://test.com/partitionkey=partitionvalue 命名的子目录中。例如
s3://test.com/dt=2014-03-05
如果您遵循此约定,则可以使用 MSCK 添加所有分区。
如果您不能或不想使用此命名约定,则需要添加所有分区,如下所示:
ALTER TABLE test
ADD PARTITION (dt='2014-03-05')
location 's3://test.com/2014-03-05'
关于hadoop - 如何在特定日期之前使用配置单元添加分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22220837/