有没有办法直接从基于avro架构的镶木地板文件在Amazon Athena中创建表?模式被编码到文件中,因此我看起来很愚蠢,我需要自己实际创建DDL。
我看到了this以及另一个duplication
但它们与Hive直接相关,它不适用于Athena。 理想情况下,我正在寻找一种以编程方式执行此操作的方法,而无需在控制台上进行定义。
答案 0 :(得分:3)
现在使用AWS Glue或多或少可以实现这一点。 Glue可以抓取一堆不同的数据源,包括Parquet files on S3。发现的表格将添加到Glue数据目录中,并可从Athena查询。根据您的需要,您可以安排胶水爬虫定期运行,或者您可以使用Glue API定义和运行爬虫。
如果您有许多共享模式的数据,您还可以使用partitioned table来减少为Athena提供新负载的开销。例如,我有一些每日转储加载到按日期分区的表中。只要架构没有改变,您需要做的就是MSCK REPAIR TABLE
。
答案 1 :(得分:0)
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