使用 Athena 跨 S3 存储桶查询
Querying across S3 buckets using Athena
我正在尝试了解数据湖,但大多数示例仅显示简单的用例。我想理解的是有效的'join queries'.
例如,我有包含产品数据的文件(上传到 S3-Product-Data)和包含产品年销售额的数据库(上传到 S3-Product-Sales)。 AWS Lakes / Athena 如何进行跨这两个环境运行的查询?
当然link他们需要一些东西。我只是不确定查询会是什么样子,也不确定 Athena 在幕后做了什么来合并数据(并提高性能)。
您要做的是在 Athena 中创建一个 table 来引用包含产品数据的文件,以及另一个 table 来引用包含年销售额的文件。之后,您可以 运行 SQL 组合 tables.
SQL 的确切外观取决于您的数据、它有哪些列等。如果您的产品数据有 product_id
列,并且您的销售数据也有,您可以加入他们是这样的(列名当然都是编的):
SELECT product_name, SUM(sales.sold_for) AS total_revenue
FROM products
LEFT JOIN sales USING (product_id)
对于您在数据库中的数据,请提取 csv 文件中的数据并将其放入另一个 s3 存储桶中。然后配置胶水爬虫在这个s3 bucket上爬,让它创建一个table。然后,您可以加入现有的雅典娜 table 和新的 table.
我正在尝试了解数据湖,但大多数示例仅显示简单的用例。我想理解的是有效的'join queries'.
例如,我有包含产品数据的文件(上传到 S3-Product-Data)和包含产品年销售额的数据库(上传到 S3-Product-Sales)。 AWS Lakes / Athena 如何进行跨这两个环境运行的查询?
当然link他们需要一些东西。我只是不确定查询会是什么样子,也不确定 Athena 在幕后做了什么来合并数据(并提高性能)。
您要做的是在 Athena 中创建一个 table 来引用包含产品数据的文件,以及另一个 table 来引用包含年销售额的文件。之后,您可以 运行 SQL 组合 tables.
SQL 的确切外观取决于您的数据、它有哪些列等。如果您的产品数据有 product_id
列,并且您的销售数据也有,您可以加入他们是这样的(列名当然都是编的):
SELECT product_name, SUM(sales.sold_for) AS total_revenue
FROM products
LEFT JOIN sales USING (product_id)
对于您在数据库中的数据,请提取 csv 文件中的数据并将其放入另一个 s3 存储桶中。然后配置胶水爬虫在这个s3 bucket上爬,让它创建一个table。然后,您可以加入现有的雅典娜 table 和新的 table.