2017-03-16 3 views
3

Ich habe ORC Daten in S3, der wie folgt aussieht:AWS Athena: Hat `msck repair table` Kosten?

s3://bucket/orc/clientId=client-1/year=2017/month=3/day=16/hour=20/ 
s3://bucket/orc/clientId=client-2/year=2017/month=3/day=16/hour=21/ 
s3://bucket/orc/clientId=client-3/year=2017/month=3/day=16/hour=22/ 

Jede Stunde ich ein EMR Job ausführen, die JSON in S3 auf ORC umwandelt und sie schreiben mit dem Pfad Partition Konvention aus (siehe oben) für Athena Einnahme. Nachdem der EMR-Job abgeschlossen ist, starte ich msck repair table, damit Athena die neuen Partitionen aufnehmen kann.

Ich habe drei Fragen:

  1. Hat msck repair table in diesem Szenario ausgeführt wird, kostet mich Geld in AWS?
  2. AWS Docs saymsck repair table kann Timeout. Gibt es eine Möglichkeit, einen Schritt in der Datenpipeline zu machen, um diesen Befehl bis zum erfolgreichen Abschluss fortzusetzen?
  3. Ich würde es vorziehen, die Partitionen manuell zu Athena hinzuzufügen (da ich das Jahr, den Monat, den Tag, die Stunde kenne, an der ich arbeite). Allerdings kenne ich die clientId nicht, weil es 1-X von ihnen geben könnte, und ich weiß nicht, welche zum Zeitpunkt der EMR existieren. Gibt es einen Best-Practice-Weg, um dieses Problem zu lösen (mit Hive oder etwas anderem)? Ich könnte einen s3 api Anruf machen, um eine Liste von s3://bucket/org/ zu erhalten und Code zu schreiben, um über Liste zu iterieren und manuell hinzuzufügen. Ich hoffe, es ist ein einfacher Weg, ...

Hinweis: wenn ich sage "Partitionen manuell hinzufügen" Ich meine, so etwas wie dies zu tun:

ALTER TABLE <athena table> 
ADD PARTITION (clientId='client-1',year=2017,month=3,day=16,hour=20) 
location 's3://bucket/orc/clientId=client-1/year=2017/month=3/day=16/hour=20/'; 

Antwort

1

AWS says:

DDL-Abfragen oder die Erkennung von Partitionen sind kostenlos.

AWS says:

S3 GET Gebühr tun.

Ich weiß noch nicht, wie man msck repair table automatisiert, um sicherzustellen, dass es vervollständigt wird.

Verwandte Themen