Apache Pinot es un almacén de datos OLAP distribuido en tiempo real, creado para ofrecer análisis escalables en tiempo real con baja latencia. Puede ingerir fuentes de datos por lotes (como Hadoop HDFS, Amazon S3, Azure ADLS, Google Cloud Storage), así como fuentes de datos en streaming (como Apache Kafka).
Pinot fue creado por ingenieros de LinkedIn y Uber y está diseñado para ampliarse y ampliarse sin límite superior. El rendimiento siempre permanece constante según el tamaño de su clúster y el umbral esperado de consultas por segundo (QPS).
Para obtener guías de introducción, recetas de implementación, tutoriales y más, visite la documentación de nuestro proyecto en https://docs.pinot.apache.org.
Pinot se creó originalmente en LinkedIn para impulsar aplicaciones analíticas interactivas en tiempo real, como Quién vio el perfil, Análisis de la empresa, Talent Insights y muchas más. UberEats Restaurant Manager es otro ejemplo de una aplicación de análisis orientada al cliente. En LinkedIn, Pinot impulsa más de 50 productos orientados al usuario, incorporando millones de eventos por segundo y atendiendo más de 100.000 consultas por segundo con una latencia de milisegundos.
Consultas rápidas : filtre y agregue conjuntos de datos de petabytes con latencias P90 en decenas de milisegundos, lo suficientemente rápido como para devolver resultados en vivo de forma interactiva en la interfaz de usuario.
Alta concurrencia : con aplicaciones orientadas al usuario que consultan a Pinot directamente, puede atender cientos de miles de consultas simultáneas por segundo.
Interfaz de consulta SQL : se puede acceder a la interfaz de consulta SQL de alto estándar a través de un editor de consultas integrado y una API REST.
Uniones versátiles : realice uniones arbitrarias de hecho/dimensión y hecho/hecho en conjuntos de datos de petabytes.
Orientado a columnas : una base de datos orientada a columnas con varios esquemas de compresión, como longitud de ejecución y longitud de bits fija.
Indexación conectable : tecnologías de indexación conectables que incluyen marca de tiempo, invertida, StarTree, filtro Bloom, rango, texto, JSON y opciones geoespaciales.
Ingesta por secuencias y por lotes : ingesta desde Apache Kafka, Apache Pulsar y AWS Kinesis en tiempo real. Ingesta por lotes de Hadoop, Spark, AWS S3 y más. Combine fuentes por lotes y de streaming en una sola tabla para realizar consultas.
Upsert durante la ingesta en tiempo real : actualice los datos a escala con coherencia
Multitenencia integrada : administre y proteja los datos en espacios de nombres lógicos aislados para una gestión de recursos compatible con la nube.
Creado para escalar : Pinot es escalable horizontalmente y tolerante a fallas, adaptable a cargas de trabajo en todo el espectro de almacenamiento y rendimiento.
Nativo de la nube en Kubernetes : Helm chart proporciona una implementación en clúster escalable horizontalmente y tolerante a fallas que es fácil de administrar con Kubernetes.
Pinot está diseñado para ejecutar consultas OLAP en tiempo real con baja latencia en cantidades masivas de datos y eventos. Además de la ingesta de transmisiones en tiempo real, Pinot también admite casos de uso por lotes con las mismas garantías de baja latencia. Es adecuado en contextos donde se necesitan análisis rápidos, como agregaciones, de datos inmutables, posiblemente con ingesta de datos en tiempo real. Pinot funciona muy bien para consultar datos de series temporales con muchas dimensiones y métricas.
Consulta de ejemplo:
SELECT sum (clicks), sum (impressions) FROM AdAnalyticsTable
WHERE
((daysSinceEpoch >= 17849 AND daysSinceEpoch <= 17856 )) AND
accountId IN ( 123456789 )
GROUP BY
daysSinceEpoch TOP 100
¿Quieres contribuir a apache/pinot? ?
¿Quiere unirse a las filas de los comprometidos con el código abierto de Apache Pinot? Luego consulte la Guía de contribución para saber cómo puede participar en el código.
Si tiene un error o una idea para una nueva característica, explore los problemas abiertos para ver en qué estamos trabajando antes de abrir uno nuevo.
También etiquetamos algunos problemas para principiantes que los nuevos contribuyentes pueden abordar.
# Clone a repo
$ git clone https://github.com/apache/pinot.git
$ cd pinot
# Build Pinot
# -Pbin-dist is required to build the binary distribution
# -Pbuild-shaded-jar is required to build the shaded jar, which is necessary for some features like spark connectors
$ mvn clean install -DskipTests -Pbin-dist -Pbuild-shaded-jar
# Run the Quick Demo
$ cd build/
$ bin/quick-start-batch.sh
Para la configuración del desarrollo de la interfaz de usuario, consulte este documento.
Las compilaciones normales de Pinot se realizan utilizando el comando mvn clean install
.
Sin embargo, este comando puede tardar mucho en ejecutarse.
Para compilaciones más rápidas, se recomienda utilizar mvn verify -Ppinot-fastdev
, que deshabilita algunos complementos que en realidad no son necesarios para el desarrollo.
Puede encontrar instrucciones más detalladas en la sección Demostración rápida de la documentación.
Consulte Ejecución de Pinot en Kubernetes en la documentación de nuestro proyecto. Pinot también proporciona integraciones de Kubernetes con el motor de consultas interactivo Trino Presto y la herramienta de visualización de datos Apache Superset.
Consulte la documentación de Pinot para obtener una descripción completa de las características de Pinot.
Apache Pinot está bajo licencia Apache, versión 2.0