Saltar al contenido

Cómo hacer que MSCK REPAIR TABLE se ejecute automáticamente en AWS Athena

Solución:

Hay varias formas de programar esta tarea. ¿Cómo programa sus flujos de trabajo? ¿Utiliza un sistema como Airflow, Luigi, Azkaban, cron o utiliza una canalización de datos de AWS?

Desde cualquiera de estos, debería poder disparar el siguiente comando CLI.

$ aws athena start-query-execution --query-string "MSCK REPAIR TABLE some_database.some_table" --result-configuration "OutputLocation=s3://SOMEPLACE"

Otra opción sería AWS Lambda. Podrías tener una función que llame MSCK REPAIR TABLE some_database.some_table en respuesta a una nueva carga en S3.

Un ejemplo de función Lambda podría escribirse como tal:

import boto3

def lambda_handler(event, context):
    bucket_name="some_bucket"

    client = boto3.client('athena')

    config = {
        'OutputLocation': 's3://' + bucket_name + "https://foroayuda.es/",
        '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)

Luego, configuraría un disparador para ejecutar su función Lambda cuando se agreguen nuevos datos en la DATA/ prefijo en su cubo.

En última instancia, reconstruir explícitamente las particiones después de ejecutar su trabajo de Spark con un programador de trabajos tiene la ventaja de ser autodocumentado. Por otro lado, AWS Lambda es conveniente para trabajos como este.

Deberías estar corriendo ADD PARTITION en lugar de:

aws athena start-query-execution --query-string "ALTER TABLE ADD PARTITION..."

Lo que agrega una partición recién creada de su S3 location Athena aprovecha Hive para particionar datos. Para crear una tabla con particiones, debe definirla durante el CREATE TABLE declaración. Usar PARTITIONED BY para definir las claves mediante las cuales particionar los datos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *