ORC (Optimized Row Columnar) es un formato de archivo de almacenamiento de datos auto-descriptivo, open-source y orientado a columnas, diseñado específicamente para sistemas de procesamiento de datos distribuidos como Apache Hive, Spark y Presto. A diferencia de los formatos puramente columnares, ORC organiza los datos en 'stripes' (franjas) que contienen un conjunto de filas, y dentro de cada 'stripe', los datos se almacenan columnarmente. Esto permite un equilibrio entre la eficiencia de lectura columnar (al acceder solo a las columnas necesarias) y la eficiencia de escritura/lectura de bloques de filas contiguas. Incluye características como compresión a nivel de columna, índices ligeros (min/max, sum, count) y 'predicate pushdown' para filtrar datos antes de cargarlos en memoria, reduciendo significativamente la cantidad de E/S.

ORC es ampliamente adoptado en el ecosistema de Big Data. Apache Hive lo utiliza como uno de sus formatos de almacenamiento preferidos para tablas gestionadas, mejorando drásticamente el rendimiento de las consultas SQL. Apache Spark también soporta ORC de forma nativa, permitiendo a los ingenieros de datos leer y escribir datos en este formato para optimizar sus pipelines y análisis. Otros sistemas como Presto (ahora Trino) y Apache Impala también aprovechan ORC para consultas interactivas de baja latencia sobre grandes volúmenes de datos. Su uso es fundamental en data lakes y data warehouses construidos sobre HDFS o almacenamiento en la nube, donde la eficiencia en el acceso a datos es crítica.

Para un Arquitecto de Sistemas, la elección de ORC es una decisión estratégica clave para optimizar el rendimiento y el costo en plataformas de análisis de Big Data. Su naturaleza columnar permite un 'predicate pushdown' y 'column pruning' muy eficientes, lo que significa que las consultas solo leen las columnas y las filas relevantes, reduciendo la E/S y el uso de memoria. Esto se traduce en consultas más rápidas y menores costos de infraestructura, especialmente en entornos de nube donde se paga por el procesamiento y el almacenamiento. Sin embargo, ORC puede ser menos eficiente para cargas de trabajo de escritura intensiva o para acceso a registros individuales (OLTP), donde formatos basados en filas o bases de datos transaccionales son más adecuados. La clave es entender el patrón de acceso a los datos: si predomina el análisis de grandes volúmenes de datos con acceso a subconjuntos de columnas, ORC es una opción superior.