我在Athena中设置了一个新的日志表,如下图所示,其中Athena位于BucketName/
的顶部
我有一个运行良好的Athena系统,基于相同的数据,但没有下面列出的子目录结构。现在有了这个新的子目录结构,我可以看到数据在我执行select * from table_name limit 100
时正确显示但是当我执行类似count(x) by week
的查询时,查询会挂起。
S3中的数据在GZipped文件夹中不超过100GB,但查询挂起超过20分钟并且说6.5TB扫描,这听起来像是循环并扫描相同的数据。我的猜测是它与这个目录结构有关,但是从我在其他线程中看到的是Athena应该能够通过指向基础文件夹BucketName/
来解析子目录
BucketName
|
|
|---Year(2016)
| |
| |---Month(11)
| | |
| | |---Daily File Format YYYY-MM-DD-Data000.gz
任何意见,将不胜感激!
创建表DDL
CREATE EXTERNAL TABLE
test_table(
foo1string,
foo2string,
foo3string,
datestring,
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
MAP KEYS TERMINATED BY '\u0003'
WITH SERDEPROPERTIES (
'collection.delim'='\u0002')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://Listen_Data/2018/01'
TBLPROPERTIES (
'has_encrypted_data'='false',
)
通过添加修复
PARTITIONED BY (
`year` string,
`month` string)
在DDL语句中的模式定义之后。