He particionado datos almacenados en S3 en formato de colmena como este.
bucket/year=2017/month=3/date=1/filename.json bucket/year=2017/month=3/date=2/filename1.json bucket/year=2017/month=3/date=3/filename2.jsonCada partición tiene alrededor de 1.000.000 de registros. He creado tablas y particiones en Athena para esto.
Ahora ejecutando consulta desde Athena
select count(*) from mts_data_1 where year='2017' and month='3' and date='1'esta consulta tarda 1800 segundos en escanear 1 000 000 de registros.
Entonces, mi pregunta es ¿cómo puedo mejorar el rendimiento de esta consulta?
Creo que el problema es que Athena tiene que leer tantos archivos de S3. 250 MB no son tantos datos, pero 1.000.000 de archivos son muchos archivos. El rendimiento de las consultas de Athena mejorará drásticamente si reduce la cantidad de archivos, y la compresión de los archivos agregados ayudará un poco más. ¿Cuántos archivos necesita para la partición de un día? Incluso con una resolución de un minuto, necesitaría menos de 1500 archivos. Si el tiempo de consulta actual es de ~30 minutos, puede comenzar fácilmente con mucho menos.
Hay muchas opciones para agregar y comprimir sus registros: