이 작업을 예약하는 방법에는 여러 가지가 있습니다. 워크 플로를 어떻게 예약합니까? Airflow, Luigi, Azkaban, cron 또는 AWS Data pipeline과 같은 시스템을 사용하고 있습니까?
이 중 하나에서 다음 CLI 명령을 실행할 수 있어야합니다.
$ aws athena start-query-execution --query-string "MSCK REPAIR TABLE some_database.some_table" --result-configuration "OutputLocation=s3://SOMEPLACE"
또 다른 옵션은 AWS Lambda 될 것이다. S3에 대한 새 업로드에 대한 응답으로 MSCK REPAIR TABLE some_database.some_table
을 호출하는 함수가있을 수 있습니다.
예 람다 기능
은 같은 작성할 수 :
import boto3
def lambda_handler(event, context):
bucket_name = 'some_bucket'
client = boto3.client('athena')
config = {
'OutputLocation': 's3://' + bucket_name + '/',
'EncryptionConfiguration': {'EncryptionOption': 'SSE_S3'}
}
# Query Execution Parameters
sql = 'MSCK REPAIR TABLE some_database.some_table'
context = {'Database': 'some_database'}
client.start_query_execution(QueryString = sql,
QueryExecutionContext = context,
ResultConfiguration = config)
그런 다음 새로운 데이터가 버킷에서 DATA/
접두사에 따라 추가 할 때 람다 기능을 실행하는 트리거를 구성합니다.
궁극적으로 작업 스케줄러를 사용하여 스파크 작업을 실행 한 후에 파티션을 명시 적으로 다시 빌드하면 자체 문서화의 이점이 있습니다. 반면 AWS Lambda는 이와 같은 작업에 편리합니다.