寒玉 Blog
  • Home
  • Books
  • About Me
  • Categories
  • Tags
  • Archives

AWS Athena Query S3 Json Data


使用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

p5RVQf.md.png

Querying the Data

现在表已经创建了,可以通过标准的SQL进行查询

SELECT * FROM table1

p5Rjts.md.png

可能问题

1.创建好之后,不能查询到数据:

请检查表结构和json文件中的属性是否相同
请检查字段的类型和实际类型是否匹配

参考

  • https://blog.skeddly.com/2016/12/getting-started-with-amazon-athena-json-edition.html

  • « JAVA8 Timer & TimerTask
  • 概率论(机器学习)-贝叶斯公式 »

Published

1 22, 2018

Last Updated

2018-01-22 22:06:58+08:00

Category

aws

Tags

  • athena 3
  • aws 3
  • s3 1
  • Powered by Pelican. Theme: Elegant by Talha Mansoor