Si construyo una tabla Hive encima de algún directorio S3 (o HDFS) así:
create external table newtable (name string) row format delimited fields terminated by ',' stored as textfile location 's3a://location/subdir/';Cuando agrego archivos a esa ubicación de S3, la tabla de Hive no se actualiza automáticamente. Los nuevos datos solo se incluyen si creo una nueva tabla de Hive en esa ubicación. ¿Hay alguna forma de crear una tabla de Hive (tal vez usando particiones) para que cada vez que se agreguen nuevos archivos al directorio subyacente, la tabla de Hive muestre automáticamente esos datos (sin tener que volver a crear la tabla de Hive)?
En HDFS, cada archivo escaneado cada horario que se consulta como señaló @Dudu Markovitz. Y los archivos en HDFS son inmediatamente consistentes.
Actualización: S3 también es muy consistente ahora , por lo que se eliminó parte sobre la coherencia final.
También puede haber un problema con el uso de estadísticas al consultar la tabla después de agregar archivos, consulte aquí: https://stackoverflow.com/a/39914232/2700344
Todo lo que dice @leftjoin es correcto, con un detalle adicional: s3 no ofrece consistencia inmediata en las listas. Se puede cargar un nuevo blob, HEAD/GET lo devolverá, pero es posible que una operación de lista en la ruta principal no lo vea. Esto significa que es posible que el código de Hive que enumera el directorio no vea los datos. El uso de nombres únicos no soluciona esto, solo usa una base de datos consistente como Dynamo que se actualiza a medida que se agregan o eliminan archivos. Incluso allí, ha agregado algo nuevo para mantenerse sincronizado...