有没有办法直接从基于 avro 模式的 parquet 文件在 Amazon Athena 中创建表?架构被编码到文件中,所以我需要自己实际创建 DDL 似乎很愚蠢。
但它们与 Hive 直接相关,它不适用于 Athena。理想情况下,我正在寻找一种无需在控制台上定义它的编程方式。
有没有办法直接从基于 avro 模式的 parquet 文件在 Amazon Athena 中创建表?架构被编码到文件中,所以我需要自己实际创建 DDL 似乎很愚蠢。
但它们与 Hive 直接相关,它不适用于 Athena。理想情况下,我正在寻找一种无需在控制台上定义它的编程方式。
现在使用AWS Glue或多或少可以做到这一点。Glue 可以抓取一堆不同的数据源,包括S3 上的 Parquet 文件。发现的表将添加到 Glue 数据目录中,并可从 Athena 查询。根据您的需要,您可以安排 Glue 爬虫定期运行,或者您可以使用 Glue API 定义和运行爬虫。
如果您有许多共享模式的单独数据块,您还可以使用分区表来减少为 Athena 提供新负载的开销。例如,我有一些每日转储,它们加载到按日期分区的表中。只要架构没有改变,那么您需要做的就是MSCK REPAIR TABLE
.
Athena 似乎不可能,因为avro.schema.url
它不是受支持的属性。
table property 'avro.schema.url' is not supported. (Service: AmazonAthena; Status Code: 400; Error Code: InvalidRequestException...)
您可以使用avro.schema.literal
(您必须将 avro json 模式复制到查询中),但之后我在查询数据时仍然遇到问题。
奇怪的错误,例如:
SYNTAX_ERROR: line 1:8: SELECT * not allowed in queries without FROM clause