es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Procesador personalizado de Apache Nifi procesando solo un registro de archivo.

He creado un procesador personalizado para procesar registros JSON de un archivo. El archivo de entrada tiene múltiples registros JSON separados por una nueva línea. Estoy utilizando los procesadores GetFile, CustomProcessor y PutFile. Sin embargo, solo obtengo un registro en el archivo de salida.

Utilicé el ejemplo de nifi disponible en GitHub en https://www.nifi.rocks/developing-a-custom-apache-nifi-processor-json/.

Mi nifi se ve así:

Imagen

Me gustaría saber cómo puedo hacer que el procesador procese varios registros del archivo de entrada y escribir un número finito de registros en el archivo de salida.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para procesar múltiples registros del archivo de entrada y escribir un número finito de registros en el archivo de salida, puedes hacer uso de los atributos de los flujo de datos de NiFi. En tu procesador personalizado, puedes establecer el número máximo de registros a escribir en el archivo de salida como un atributo. Luego, puedes utilizar un script o código para leer el archivo de entrada línea por línea, extraer los registros JSON y crear un flujo de datos para cada registro. Para cada flujo de datos, puedes agregar el número de registros procesados como un atributo.

    Una vez que tengas el flujo de datos con JSON en cada registro, puedes utilizar un procesador divisor para dividir el flujo de datos en registros individuales. Luego, puedes utilizar otro procesador personalizado o un conjunto de procesadores para realizar cualquier transformación, filtrado o agregación requerida. Finalmente, los archivos de flujo de salida se pueden fusionar utilizando un procesador MergeContent y escribir en el archivo de salida utilizando el procesador PutFile.

    Aquí tienes algunos pasos que puedes seguir para lograr esto:

    1. En tu procesador personalizado, establece un número máximo de registros que se pueden escribir en el archivo de salida como un atributo. Puedes hacer esto agregando una nueva propiedad a tu procesador personalizado y estableciendo su valor predeterminado en 100 o cualquier otro número que se adapte a tu caso de uso.
    2. Lee el archivo de entrada línea por línea, extrayendo cada registro JSON y creando un flujo de datos para cada registro. Para cada flujo de datos, agrega el número de registros procesados como un atributo.

    3. Divide el flujo de datos en registros individuales utilizando el procesador SplitJson.

    4. Utiliza tu procesador personalizado o un conjunto de procesadores para realizar cualquier transformación, filtrado o agregación requerida.

    5. Fusiona los archivos de flujo de salida en un solo flujo de datos utilizando el procesador MergeContent.

    6. Escribe el flujo de datos fusionado en el archivo de salida utilizando el procesador PutFile.

    Con estos pasos, ahora deberías poder procesar múltiples registros del archivo de entrada y escribir un número finito de registros en el archivo de salida.

Comments are closed.