AWS更新Athena meta:胶履带vs MSCK维修表

时间:2019-05-23 19:08:09

标签: amazon-web-services amazon-athena aws-glue

将新分区添加到Athena表时,我们可以使用Glue Crawler或MSCK REPAIR TABLE更新元信息。他们的费用是多少?哪个是首选?

2 个答案:

答案 0 :(得分:2)

MSCK REPAIR TABLE命令要求您的S3键将分区方案包括为documented here。如果您的S3键不包括分区方案,则MSCK REPAIR TABLE命令将返回丢失的分区,但是您仍然必须将它们添加进去。另外一个区别是,MSCK REPAIR TABLE命令可能会在超时后超时30分钟(默认的雅典娜查询时间长度),而粘合爬行器则不会。

以下是价格信息:

Glue Crawler

  

AWS Glue搜寻器运行时按小时收费,以发现数据并填充AWS Glue数据目录。我们会根据用于运行搜寻器的数据处理单元(或DPU)的数量向您收取每小时的费用。单个数据处理单元(DPU)提供4个vCPU和16 GB的内存。系统会以1秒为单位向您收费,四舍五入到最接近的秒,每次爬网的最短持续时间为10分钟。可以选择使用AWS Glue搜寻器,您可以直接通过API填充AWS Glue数据目录。

     

定价

     

对于所有可用AWS Glue的AWS区域:   每DPU小时$ 0.44,按秒计费,每次搜寻器运行至少10分钟

Athena

  

对于数据定义语言(DDL)语句(例如CREATE / ALTER / DROP TABLE,用于管理分区的语句或失败的查询)不收费。

但是,在这两个命令之上,您仍然会产生S3费用。参考:AWS Athena: does `msck repair table` incur costs?

我认为,添加新数据后,如果可以的话,最好自己管理分区。

'ALTER TABLE database.table ADD
PARTITION (partition_name='PartitionValue') location 's3://bucket/path/partition'

如果被迫使用Glue或Athena,我将评估哪种方法更适合您的流程。 MSCK REPAIR TABLE命令可能更易于管理,但是如果分区中有很多数据或它们未正确分区,则可能会遇到麻烦。另外,您将必须有一种自动运行命令的方法。可以使用触发器配置“胶水爬行器”。

答案 1 :(得分:1)

我同意手动添加分区。您可以按照@KiteCoder的答案,通过Athena查询(ALTER TABLE ... ADD PARTITION () ...)来执行此操作,也可以直接通过Glue API来执行此操作。

调用Glue API较为冗长,但也更加“结构化”。调用Athena显然是一个SQL查询,我知道有多少人不屑于编写动态生成SQL的代码。

具体操作为CreatePartition。它确实需要一个名为StorageDescriptor的对象,该对象定义了该表中的所有列和数据类型,但是对于现有表,您可以从GetTable操作中检索该结构。