mysql - 从 Amazon S3 存储桶文件创建/更新 Amazon Athena 表

标签 mysql amazon-web-services amazon-s3 amazon-athena

我已经上传了 Amazon S3 存储桶中所有表的 MySQL csv 文件/MYSQL zip 文件。现在我想将 Amazon Athena 与 S3 存储桶文件链接起来。但是当我为不同的表编写模式时,每个表的选择查询都显示相同的结果。我搜索了很多,但无法理解执行此操作的确切/正确方法。

我想借助 S3 存储桶中的一个 csv/sql zip 文件在 Athena 中创建/更新不同的表架构。

最佳答案

Amazon Athena 将查看定义的 目录为数据。该目录中的所有数据文件都将被视为包含给定表的数据。

您使用的是 CREATE TABLE命令来定义架构并将 Athena 定向到目录,例如:

CREATE EXTERNAL TABLE test1 (
  f1 string,
  s2 string
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES ("separatorChar" = ",", "escapeChar" = "\\") 
LOCATION 's3://my-bucket/data-directory/'

您将需要运行 CREATE EXTERNAL TABLE每个表的命令,每个表的数据应该在一个单独的目录中。 CSV 文件可以是 ZIP 格式(这使得查询速度更快、成本更低)。

作为自己编写这些表定义的替代方法,您可以 create a crawler in AWS Glue .将搜寻器指向数据目录,提供名称,搜寻器将检查数据文件并创建与文件匹配的表定义。

关于mysql - 从 Amazon S3 存储桶文件创建/更新 Amazon Athena 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725951/

相关文章:

MySql:从按日期分组的两个表中获取数据

java - 根据表结构在运行时动态创建 CRUD 表单

mysql - 如何按时间对事件表进行排序(具有不同的时区)?

amazon-web-services - DynamoDB : Best hash/sort keys for my use case [confusion with AppSync/GraphQL]

bash - 引导新的 EC2 实例时使用 UserData 中的内部函数

mysql - 使用 LIMIT 时,在 MySQL 中使用 UNION ALL 获取单个 SELECT 语句的结果行数

amazon-web-services - AWS EC2 用户数据脚本未按预期工作

java - 将多部分文件上传到S3

powershell - powershell 将文件移动到 Amazon s3

python - 解决 AWS Lambda 空间限制