Formato de datos jerárquicos. ¿Cuáles son las ventajas en comparación con los formatos alternativos?

datascience.stackexchange https://datascience.stackexchange.com/questions/262

Pregunta

¿Cuáles son los principales beneficios de almacenar datos en HDF? Y cuáles son las principales tareas de la ciencia de datos donde HDF es realmente adecuado y útil?

¿Fue útil?

Solución

Tal vez una buena manera de parafrasear la pregunta es, cuáles son las ventajas en comparación con los formatos alternativos?

Las principales alternativas son, pienso:. Una base de datos, archivos de texto, u otro formato empaquetado / binario

opciones de la base de datos a tener en cuenta son, probablemente, una tienda columnar o NoSQL, o para pequeños conjuntos de datos independientes SQLite. La principal ventaja de la base de datos es la capacidad de trabajar con datos mucho más grandes que la memoria, para tener acceso aleatorio o indexada, y añadir / Anexar / modificar los datos de forma rápida. El principal dis * * ventaja es que es mucho más lento que el HDF, por problemas en los que la totalidad de las necesidades del conjunto de datos que se deben leer y procesar. Otra desventaja es que, con la excepción de las bases de datos de tipo incrustado como SQLite, una base de datos es un sistema (que requiere Admnistration, configuración, mantenimiento, etc.) en lugar de un simple almacén de datos autónomo.

Las opciones de formato de archivo de texto son XML / JSON / CSV. Ellos son multiplataforma / idioma / juego de herramientas, y son un buen formato de archivo debido a la capacidad de ser auto-descripción (o :) obvio. Si sin comprimir, que son enormes (10x-100x HDF), pero si comprimido, pueden ser bastante eficiente con el espacio (XML comprimido es aproximadamente la misma que HDF). La desventaja principal aquí es de nuevo la velocidad:. Texto de análisis es mucho, mucho más lento que HDF

Los otros formatos binarios (NPY / NPZ numpy archivos, archivos blz resplandor, tampones de protocolo, Avro, ...) tienen propiedades muy similares a HDF, excepto por su menor divulgación compatibles (puede estar limitada a una única plataforma: numpy ) y pueden tener otras limitaciones específicas. Por lo general no ofrecen una ventaja convincente.

HDF es un buen complemento para las bases de datos, puede tener sentido para ejecutar una consulta para producir un conjunto de datos más o menos del tamaño de la memoria caché y luego en HDF si los mismos datos se utilizan más de una vez. Si usted tiene un conjunto de datos que se fija y procesa normalmente en su conjunto, almacenarla como una colección de archivos HDF tamaño apropiado no es una mala opción. Si usted tiene un conjunto de datos que se actualiza con frecuencia, puesta en escena algunos de ellos como archivos HDF periódicamente aún podría ser útil.

Para resumir, HDF es un formato bueno para los datos que se lee (o escrito) por lo general como un todo; es el / formato de intercambio preferido lengua franca o común para muchas aplicaciones debido a un amplio apoyo y la compatibilidad, decente como un formato de archivo, y muy rápido.

P.S. Para dar a este un contexto práctico, mi experiencia reciente más la comparación con las alternativas HDF, una cierta pequeña (mucho menos de memoria de tamaño) de datos tardó 2 segundos para que lea como HDF (y la mayor parte de esto es probablemente por encima de las pandas); ~ 1 minuto para leer de JSON; y 1 horas para escribir en la base de datos. Ciertamente, la escritura base de datos podría ser acelerado, pero es mejor que tener un buen DBA! Esta es la forma en que funciona fuera de la caja.

Otros consejos

Uno de los beneficios es amplio apoyo -. C, Java, Perl, Python, y R HDF5 todos tienen fijaciones

Otra ventaja es la velocidad. No he visto como punto de referencia, pero HDF se supone que es más rápido que las bases de datos SQL.

Yo entiendo que es muy buena cuando se utiliza con los dos grandes conjuntos de datos científicos y datos de series temporales - supervisión de la red, el control del uso, etc.

.

No creo que hay un límite de tamaño para los archivos HDF (aunque todavía se aplicarían los límites del sistema operativo.

Para añadir, echa un vistazo a ASDF en particular, su artículo ASDF: Un nuevo formato de datos para la astronomía ; ASDF intenta mejorar HDF5 y el documento describe algunos aspectos negativos de formato HDF5.

Licenciado bajo: CC-BY-SA con atribución
scroll top