使用athena查询aws的s3上的数据.需要遵循以下流程:
- 使用AWS S3创建一个存储桶
- 放置需要查询的文件到S3存储桶中
- 根据存储通里的数据结构,创建athena存储表
我们目前需要接一些报表数据到Superset中去展示,通过讨论决定采用以下流程:
mongodb -> S3 -> athena -> superset
- 每日处理MongoDB中的业务数据成JSON文件
- Put Json文件到 S3中
- 使用athena查询S3中的json文件
- 使用athena所谓superset的数据源,进行报表展示
数据输入格式为:
{
"name": "Albert",
"numPets": 1,
"birthDate": "1970-01-01 07:20:00"
}
因为 AWS athena 查询的数据需要一条记录是一行,所以需要在文件冲,把json处理成 一条记录一行的方式
{ "name": "Albert", "numPets": 1, "birthDate": "1970-01-01 07:20:00" },
{ "name": "Albert", "numPets": 1, "birthDate": "1970-01-02 07:20:00" }
把json文件没有层级结构的方式放置到我们的S3 Bucket中:
创建DataBase 和 Table
- 创建的table的时候选择数据格式为json
- 添加三列
- 列名要与json文件中的属性名相同
-
创建表的时候选择
CREATE EXTERNAL TABLE
-
Column 1: Name: name Type: string
- Column 2: Name: numPets Type: int
- Column 3: Name: birthDate Type: timestamp
Querying the Data
现在表已经创建了,可以通过标准的SQL进行查询
SELECT * FROM table1
可能问题
1.创建好之后,不能查询到数据:
请检查表结构和json文件中的属性是否相同
请检查字段的类型和实际类型是否匹配