La organización necesita convertir un volumen extenso de datos de clientes de un archivo sin formato en datos de tipo struct, así como escribirlos en un archivo de Avro. El archivo de entrada contiene detalles de los clientes, como el nombre, la edad y los números de teléfono. Si el nombre del cliente es nulo en el archivo de entrada, no quiere que los detalles de los clientes se añadan al archivo de salida.
Puede desarrollar una asignación con una transformación Java para definir la funcionalidad de la transformación. En el entorno Hadoop, ejecute la asignación en el motor de Spark para transformar los datos y escribir los datos de tipo struct en un archivo de Avro.
Cree una asignación y configure las siguientes transformaciones:
Una transformación de lectura que lea la información de los clientes desde un origen de archivo sin formato
Una transformación Java que actúa como transformación activa que convierte los datos sin formato en datos de tipo struct y elimina los datos incoherentes
Una transformación de escritura que escribe los datos de tipo struct en un archivo de Avro
En la siguiente imagen se muestra la asignación con una transformación de lectura, una transformación Java y una transformación de escritura.
En la ficha de la biblioteca de definiciones de tipos del editor de la asignación, cree una definición de tipo de datos complejo Customer. La definición de tipo de datos complejo representa el esquema de los datos de tipo struct. Cambie el nombre de la biblioteca de definiciones de tipos a CustomerInfo. Añada los siguientes elementos a la definición de tipo de datos complejo:
Elemento name de tipo string
Elemento age de tipo integer
Elemento phones de tipo array con elementos de tipo string
En la siguiente imagen se muestra la definición de tipo de datos complejo en la biblioteca de definiciones de tipos:
En la transformación Java, añada un puerto de salida de estructura y especifique la configuración de tipo del puerto para hacer referencia a la definición de tipo de datos complejo que ha creado. La transformación Java genera una clase Customer con establecedores y captadores para leer y establecer los campos miembro. La clase contiene los siguientes campos miembro:
_name
_age
_phones
En la siguiente imagen se muestra la clase creada para el puerto de estructura en la ficha
Código completo
de la vista
Java
:
El tipo de datos de Java del puerto de estructura usa el nombre de la biblioteca de definiciones de tipos y la definición de tipos de datos complejos. En la siguiente imagen se muestra el nombre del tipo de datos de Java CustomerInfo.Customer del campo cust en el código generado:
En la vista
Java
de la transformación Java, importe los paquetes Java de terceros, integrados o personalizados que la transformación requiera. Escriba y compile el código Java para convertir los datos sin formato en datos de tipo struct y para quitar la fila de cliente si el nombre de cliente es nulo.
En la siguiente imagen se muestra el código en la ficha
En entrada
:
Valide la asignación y ejecútela en el motor de Spark para escribir los datos transformados en la salida del archivo de Avro.