Las organizaciones trabajan constantemente para procesar y analizar grandes volúmenes de datos y obtener información útil. Las capacidades de búsqueda e ingesta de datos efectivas se han vuelto esenciales para casos de uso como análisis de registros, búsqueda de aplicaciones y búsqueda empresarial. Estos casos de uso exigen una canalización sólida que pueda manejar grandes volúmenes de datos y permitir una exploración de datos eficiente.
Apache Spark, una potente herramienta de código abierto para el procesamiento de datos a gran escala, es ampliamente reconocida por su velocidad, escalabilidad y facilidad de uso. Su capacidad para procesar y transformar conjuntos de datos masivos la ha convertido en una herramienta indispensable en la ingeniería de datos moderna. Servicio Amazon OpenSearch—una solución de búsqueda y análisis impulsada por la comunidad— permite a las organizaciones buscar, agregar, visualizar y analizar datos sin inconvenientes. Juntos, Spark y OpenSearch Service ofrecen una solución atractiva para crear potentes canales de datos. Sin embargo, la ingesta de datos de Spark en OpenSearch Service puede presentar desafíos, especialmente con diversas fuentes de datos.
Esta publicación muestra cómo usar Spark en Pegamento AWS para ingerir datos sin problemas en el servicio OpenSearch. Abordamos métodos de ingestión por lotes, compartimos ejemplos prácticos y analizamos las mejores prácticas para ayudarlo a crear canales de datos optimizados y escalables en AWS.
Resumen de la solución
AWS Glue es un servicio de integración de datos sin servidor que simplifica las tareas de preparación e integración de datos para análisis, aprendizaje automático y desarrollo de aplicaciones. En esta publicación, nos centramos en la ingesta de datos por lotes en OpenSearch Service mediante Spark en AWS Glue.
AWS Glue ofrece múltiples opciones de integración con OpenSearch Service utilizando varias bibliotecas de código abierto y administradas por AWS, que incluyen:
En las siguientes secciones, exploramos cada método de integración en detalle y lo guiamos a través de la configuración y la implementación. A medida que avanzamos, construimos de manera incremental el diagrama de arquitectura que se muestra en la siguiente figura, lo que proporciona una ruta clara para crear canales de datos sólidos en AWS. Cada implementación es independiente de las demás. Elegimos mostrarlas por separado porque, en un escenario del mundo real, es probable que solo se utilice uno de los tres métodos de integración.
Puede encontrar el código base en el archivo adjunto. Repositorio GitHubEn las siguientes secciones, repasaremos los pasos para implementar la solución.
Requisitos previos
Antes de implementar esta solución, asegúrese de que se cumplan los siguientes requisitos previos:
Clonar el repositorio en su máquina local
Clona el repositorio en tu máquina local y configura el BLOG_DIR
variable de entorno. Todas las rutas relativas asumen BLOG_DIR
se establece en la ubicación del repositorio en su máquina. Si BLOG_DIR
No se está utilizando, ajuste la ruta en consecuencia.
Implemente la plantilla AWS CloudFormation para crear la infraestructura necesaria
El objetivo principal de esta publicación es demostrar cómo usar las bibliotecas mencionadas en Spark en AWS Glue para ingerir datos en OpenSearch Service. Aunque nos centramos en este tema central, será necesario aprovisionar previamente varios componentes clave de AWS para los ejemplos de integración, como un Nube privada virtual de Amazon (VPC de Amazon), múltiples Subredes, un Servicio de administración de claves de AWS Clave (AWS KMS), una Servicio de almacenamiento simple de Amazon (Amazon S3), una función de AWS Glue y un clúster de OpenSearch Service con dominios para OpenSearch Service y Elasticsearch. Para simplificar la configuración, hemos automatizado el aprovisionamiento de esta infraestructura central mediante cloudformation/opensearch-glue-infrastructure.yaml
Formación en la nube de AWS plantilla.
- Ejecute los siguientes comandos
La plantilla de CloudFormation implementará los componentes de red necesarios (como VPC y subredes), Reloj en la nube de Amazon Registro, rol de AWS Glue y dominios de OpenSearch Service y Elasticsearch necesarios para implementar la arquitectura propuesta. Use una contraseña segura (8 a 128 caracteres, tres de los cuales deben ser minúsculas, mayúsculas, números o caracteres especiales, y no debe contener /, “ ni espacios) y cumpla con los estándares de seguridad de su organización para ESMasterUserPassword
y OSMasterUserPassword
en el siguiente comando:
Debería ver un mensaje de éxito como "Successfully created/updated stack – GlueOpenSearchStack"
Una vez que los recursos se hayan aprovisionado correctamente, el aprovisionamiento de esta pila de CloudFormation suele tardar aproximadamente 30 minutos en completarse.
- En la consola de AWS CloudFormation, busque el
GlueOpenSearchStack
apilar y confirmar que su estado es CREAR_COMPLETO.
Puede revisar los recursos implementados en el Recursos pestaña, como se muestra en la siguiente captura de pantalla. La captura de pantalla no muestra todos los recursos creados.
Pasos de configuración adicionales
En esta sección, recopilamos información esencial, incluido el nombre del depósito S3 y los puntos finales del servicio OpenSearch y del dominio Elasticsearch. Estos detalles son necesarios para ejecutar el código en las secciones posteriores.
Capturar los detalles de los recursos aprovisionados
Utilice el siguiente comando de AWS CLI para extraer y guardar los valores de salida de la pila de CloudFormation en un archivo llamado GlueOpenSearchStack_outputs.txt
Haremos referencia a los valores de este archivo en los próximos pasos.
Descargue el conjunto de datos de NY Green Taxi de diciembre de 2022 y cópielo en el depósito S3
El propósito de esta publicación es demostrar la implementación técnica de la ingesta de datos en OpenSearch Service mediante AWS Glue. No es esencial comprender el conjunto de datos en sí, excepto su formato de datos, que analizamos en los cuadernos de AWS Glue en secciones posteriores. Para obtener más información sobre el conjunto de datos, puede encontrar información adicional en Sitio web de la Comisión de Taxis y Limusinas de la Ciudad de Nueva York.
Le solicitamos específicamente que descargue el conjunto de datos de diciembre de 2022, porque hemos probado la solución utilizando este conjunto de datos en particular:
Descargue los JAR necesarios del repositorio Maven y cópielos al depósito S3
Hemos especificado una versión particular del archivo JAR para garantizar una experiencia de implementación estable. Sin embargo, recomendamos cumplir con las prácticas recomendadas de seguridad de su organización y revisar las vulnerabilidades conocidas en la versión de los archivos JAR antes de la implementación. AWS no garantiza la seguridad de ningún código de fuente abierta utilizado aquí. Además, verifique la suma de comprobación del archivo JAR descargado con el valor publicado para confirmar su integridad y autenticidad.
En las siguientes secciones, implementamos los métodos de ingesta de datos individuales como se describe en el diagrama de arquitectura.
Ingerir datos en el servicio OpenSearch utilizando la biblioteca OpenSearch Spark
En esta sección, cargamos un índice de OpenSearch Service usando Spark y el Biblioteca Spark de OpenSearchDemostramos esta implementación mediante el uso de cuadernos de AWS Glue, empleando Autenticación básica mediante nombre de usuario y contraseña.
Para demostrar los mecanismos de ingestión, hemos proporcionado la Spark-and-OpenSearch-Code-Steps.ipynb
Cuaderno con instrucciones detalladas. Siga los pasos de esta sección junto con las instrucciones del cuaderno.
Configurar el cuaderno de AWS Glue Studio
Complete los siguientes pasos:
- En la consola de AWS Glue, elija Empleos de ETL en el panel de navegación.
- bajo Crear trabajo, escoger Notebook.
- Sube el archivo del cuaderno ubicado en
${BLOG_DIR}/glue_jobs/Spark-and-OpenSearch-Code-Steps.ipynb
. - Para Rol de IAM, elija la función IAM del trabajo de AWS Glue que comienza con
GlueOpenSearchStack-GlueRole-*
.
- Introduzca un nombre para el cuaderno (por ejemplo,
Spark-and-OpenSearch-Code-Steps
) y elige Guardar.
Reemplazar los valores de marcador de posición en el cuaderno
Complete los siguientes pasos para actualizar los marcadores de posición en el cuaderno:
- En el paso 1 del cuaderno, reemplace el marcador de posición con el nombre de conexión de la sesión interactiva de AWS Glue. Puede obtener el nombre de la sesión interactiva ejecutando el siguiente comando:
- En el paso 1 del cuaderno, reemplace el marcador de posición y rellenar la variable
s3_bucket
con el nombre del depósito. Puede obtener el nombre del depósito S3 ejecutando el siguiente comando:
- En el paso 4 del cuaderno, reemplace con el nombre de dominio del servicio OpenSearch. Puede obtener el nombre de dominio ejecutando el siguiente comando:
ejecutar el cuaderno
Ejecute cada celda del cuaderno para cargar datos en el dominio del servicio OpenSearch y léala nuevamente para verificar que la carga se haya realizado correctamente. Consulte las instrucciones detalladas dentro del cuaderno para obtener orientación específica sobre la ejecución.
Modos de escritura de Spark (agregar o sobrescribir)
Se recomienda escribir datos de forma incremental en los índices del Servicio OpenSearch utilizando el append
modo, como se muestra en el paso 8 en el cuaderno. Sin embargo, en ciertos casos, es posible que deba actualizar todo el conjunto de datos en el índice de OpenSearch Service. En estos escenarios, puede utilizar el overwrite
modo, aunque no se recomienda para índices grandes. Al utilizar overwrite
En el modo de preprocesamiento, la biblioteca Spark elimina filas del índice de OpenSearch Service una por una y luego reescribe los datos, lo que puede resultar ineficiente para conjuntos de datos grandes. Para evitar esto, puede implementar un paso de preprocesamiento en Spark para identificar inserciones y actualizaciones, y luego escribir los datos en OpenSearch Service usando append
modo.
Ingerir datos en Elasticsearch utilizando la biblioteca Hadoop de Elasticsearch
En esta sección, cargamos un índice Elasticsearch usando Spark y el Biblioteca Hadoop de ElasticsearchDemostramos esta implementación utilizando AWS Glue como motor para Spark.
Configurar el cuaderno de AWS Glue Studio
Complete los siguientes pasos para configurar el portátil:
- En la consola de AWS Glue, elija Empleos de ETL en el panel de navegación.
- bajo Crear trabajo, escoger Notebook.
- Sube el archivo del cuaderno ubicado en
${BLOG_DIR}/glue_jobs/Spark-and-Elasticsearch-Code-Steps.ipynb
. - Para Rol de IAM, elija la función IAM del trabajo de AWS Glue que comienza con
GlueOpenSearchStack-GlueRole-*
.
- Introduzca un nombre para el cuaderno (por ejemplo,
Spark-and-ElasticSearch-Code-Steps
) y elige Guardar.
Reemplazar los valores de marcador de posición en el cuaderno
Complete los siguientes pasos:
- En el paso 1 del cuaderno, reemplace el marcador de posición con el nombre de conexión de la sesión interactiva de AWS Glue. Puede obtener el nombre de la sesión interactiva ejecutando el siguiente comando:
- En el paso 1 del cuaderno, reemplace el marcador de posición y rellenar la variable
s3_bucket
con el nombre del depósito. Puede obtener el nombre del depósito S3 ejecutando el siguiente comando:
- En el paso 4 del cuaderno, reemplace con el nombre de dominio de Elasticsearch. Puede obtener el nombre de dominio ejecutando el siguiente comando:
ejecutar el cuaderno
Ejecute cada celda del cuaderno para cargar datos en el dominio de Elasticsearch y léala nuevamente para verificar que la carga se haya realizado correctamente. Consulte las instrucciones detalladas en el cuaderno para obtener instrucciones específicas de ejecución.
Ingerir datos en OpenSearch Service mediante la conexión de AWS Glue OpenSearch Service
En esta sección, cargamos un índice de OpenSearch Service usando Spark y el Conexión del servicio OpenSearch de AWS Glue.
Crear el trabajo de AWS Glue
Complete los siguientes pasos para crear un trabajo ETL visual de AWS Glue:
- En la consola de AWS Glue, elija Empleos de ETL en el panel de navegación.
- bajo Crear trabajo, escoger ETL visuales
Esto abrirá el editor visual del trabajo de AWS Glue.
- Seleccione el signo más y debajo Fuentes, escoger Amazon S3.
- En el editor visual, elija la opción Fuente de datos: depósito S3 nodo.
- En Los Propiedades de la fuente de datos: S3 Panel, configure la fuente de datos de la siguiente manera:
-
- Para Tipo de fuente S3, seleccione Ubicación S3.
- Para URL de S3, escoger Examinar S3y elija el
green_tripdata_2022-12.parquet
archivo del depósito S3 designado. - Para Formato de datos, escoger parquet.
- Elegir Inferir esquema para permitir que AWS Glue detecte el esquema de los datos.
Esto configurará su fuente de datos desde el depósito S3 especificado.
- Elija el signo más nuevamente para agregar un nuevo nodo.
- Para Transforma, escoger Soltar campos para incluir este paso de transformación.
Esto le permitirá eliminar cualquier campo innecesario de su conjunto de datos antes de cargarlo en el Servicio OpenSearch.
- Elija el Soltar campos Transformar nodo, luego seleccionar los siguientes campos para eliminar del conjunto de datos:
-
payment_type
trip_type
congestion_surcharge
Esto eliminará estos campos de los datos antes de que se carguen en el servicio OpenSearch.
- Elija el signo más nuevamente para agregar un nuevo nodo.
- Para Orden de Targets o Metas, escoger Servicio Amazon OpenSearch.
Esto configurará el Servicio OpenSearch como el destino de los datos que se están procesando.
- Elija el Destino de los datos: servicio Amazon OpenSearch nodo y configúrelo de la siguiente manera:
-
- Para Conexión al servicio Amazon OpenSearch, elige la conexión
GlueOpenSearchServiceConnec-*
desde el menú desplegable. - Para Home, introduzca
green_taxi
.green_taxi
El índice se creó anteriormente en la sección “Ingerir datos en el servicio OpenSearch utilizando la biblioteca OpenSearch Spark”.
- Para Conexión al servicio Amazon OpenSearch, elige la conexión
Esto configura el servicio OpenSearch para escribir los datos procesados en el índice especificado.
- En la pestaña Detalles del trabajo Pestaña, actualice los detalles del trabajo de la siguiente manera:
-
- Para Nombre, ingrese un nombre (por ejemplo,
Spark-and-Glue-OpenSearch-Connection
). - Para Descripción, ingrese una descripción opcional (por ejemplo,
AWS Glue job using Glue OpenSearch Connection to load data into Amazon OpenSearch Service
). - Para Rol de IAM, elige el rol que comienza con
GlueOpenSearchStack-GlueRole-*
. - Para el Versión con pegamento, escoger
Glue 4.0 – Supports spark 3.3, Scala 2, Python 3
- Deje el resto de los campos como predeterminados.
- Elegir Guardar Para guardar los cambios.
- Para Nombre, ingrese un nombre (por ejemplo,
- Para ejecutar el trabajo de AWS Glue Spark-and-Glue-OpenSearch-Connector, seleccione Ejecutar.
Esto iniciará la ejecución del trabajo.
- Elija el Ron pestaña y espere a que el trabajo de AWS Glue se complete correctamente.
Verá que el estado cambia a logrado cuando el trabajo esté completo.
Limpiar
Para limpiar sus recursos, complete los siguientes pasos:
- Elimine la pila de CloudFormation:
- Eliminar los trabajos de AWS Glue:
-
- En la consola de AWS Glue, debajo de Empleos de ETL en el panel de navegación, elija ETL visuales.
- Seleccione los trabajos que ha creado (
Spark-and-Glue-OpenSearch-Connector
,Spark-and-ElasticSearch-Code-Steps
ySpark-and-OpenSearch-Code-Steps
) y en el Acciones menú, seleccione Borrar.
Conclusión
En esta publicación, exploramos varias formas de ingerir datos en OpenSearch Service usando Spark en AWS Glue. Demostramos el uso de tres bibliotecas clave: Conexión del servicio OpenSearch de AWS Glue, la Biblioteca Spark de OpenSearch, y el Biblioteca Hadoop de ElasticsearchLos métodos descritos en esta publicación pueden ayudarlo a optimizar la ingesta de datos en OpenSearch Service.
Si está interesado en aprender más y adquirir experiencia práctica, hemos creado un taller que lo guiará a través de todo el proceso en detalle. Puede explorar la configuración completa para ingerir datos en OpenSearch Service, manejar transmisiones por lotes y en tiempo real y crear paneles. Vea el taller Procesamiento y análisis de datos unificados en tiempo real mediante Amazon OpenSearch y Apache Spark para profundizar su comprensión y aplicar estas técnicas paso a paso.
Acerca de los autores
Ravikiran Rao es arquitecto de datos en Amazon Web Services y le apasiona resolver desafíos complejos relacionados con los datos para diversos clientes. Fuera del trabajo, es un entusiasta del teatro y un jugador de tenis amateur.
Vishwa Gupta es Arquitecto de datos sénior en la práctica de análisis de servicios profesionales de AWS. Ayuda a los clientes a implementar grandes soluciones de análisis y datos. Fuera del trabajo, disfruta pasar tiempo con la familia, viajar y probar comida nueva.
Suvojit Dasgupta es arquitecto de datos principal en Amazon Web Services. Dirige un equipo de ingenieros expertos en el diseño y la creación de soluciones de datos escalables para clientes de AWS. Se especializa en el desarrollo e implementación de arquitecturas de datos innovadoras para abordar desafíos empresariales complejos.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/big-data/batch-data-ingestion-into-amazon-opensearch-service-using-aws-glue/