雅典娜从镶木地板模式创建表格

有没有办法直接从基于avro架构的镶木地板文件在Amazon Athena中创建表?架构被编码到文件中,所以我需要自己实际创建DDL看起来很愚蠢。

我看到了这个,还有另一个重复

但它们与Hive直接相关,这对雅典娜不起作用。理想情况下,我正在寻找一种以编程方式执行此操作的方法,而无需在控制台上定义它。


答案 1

现在,使用 AWS Glue 或多或少可以做到这一点。Glue 可以抓取一堆不同的数据源,包括 S3 上的 Parquet 文件。发现的表将添加到 Glue 数据目录中,并可从 Athena 进行查询。根据您的需要,您可以安排 Glue 爬网程序定期运行,也可以使用 Glue API 定义并运行爬网程序。

如果您有许多共享架构的单独数据块,则还可以使用分区表来减少使新负载可用于 Athena 的开销。例如,我有一些每日转储加载到按日期分区的表中。只要架构不改变,您所需要做的就是 。MSCK REPAIR TABLE


答案 2

雅典娜似乎是不可能的,因为它不是一个受支持的属性。avro.schema.url

table property 'avro.schema.url' is not supported. (Service: AmazonAthena; Status Code: 400; Error Code: InvalidRequestException...)

您可以使用(您必须将avro json架构复制到查询中),但是之后我仍然遇到查询数据的问题。avro.schema.literal

奇怪的错误,如:SYNTAX_ERROR: line 1:8: SELECT * not allowed in queries without FROM clause


推荐