/ / Sqoop Importación de datos con un nuevo carácter de línea en formato avro y luego consulta utilizando hive - hadoop, hive, sqoop, avro, apache-sqoop

Sqoop Importación de datos con un nuevo carácter de línea en formato avro y luego consulta utilizando hive - hadoop, hive, sqoop, avro, apache-sqoop

Mi requerimiento es cargar los datos de RDBMSen HDFS (respaldado por CDH 5.9.X) a través de sqoop (1.4.6) en formato avro y luego use una tabla de colmena externa (1.1) para consultar los datos. Desafortunadamente, los datos en RDBMS tienen algunos nuevos caracteres de línea.

Todos sabemos que la sección no puede analizar el carácter de la nueva línea en los datos y la asignación de datos falla cuando se seleccionan todos los datos a través de la sección. Sin embargo, el recuento de selección de la sección (*) funciona bien.

Usé las siguientes opciones durante la importación de sqoop y verifiqué, pero no funcionó:

--hive-drop-import-delims
--hive-delims-replacement

Las opciones anteriores funcionan para el formato de texto. Pero almacenar datos en formato de texto no es una opción viable para mí. Las opciones anteriores se convierten correctamente en el método toString de la clase POJO generado por Sqoop (codegen) (obviamente como el formato de texto funciona como se esperaba), por lo que creo que este método no se usa en absoluto durante avro import. Probablemente porque avro no tiene problemas Tratando con el nuevo carácter de línea, donde tiene como colmena.

Estoy sorprendido, nadie se enfrenta a un escenario tan común, una tabla que tiene comentarios, el campo de comentarios es propenso a este problema.

¿Alguien puede sugerirme una solución por favor?

Mi orden:

sqoop import 
-Dmapred.job.queue.name=XXXX 
--connect jdbc:oracle:thin:@Masked:61901/AgainMasked 
--table masked.masked 
--username masked 
--P 
--target-dir /user/masked/ 
--as-avrodatafile 
--map-column-java CREATED=String,LAST_UPD=String,END_DT=String,INFO_RECORD_DT=String,START_DT=String,DB_LAST_UPD=String,ADDR_LINE_3=String
--hive-delims-replacement " "
--null-string "\N"
--null-non-string "\N"
--fields-terminated-by "01"
-m 1

Respuestas

0 para la respuesta № 1

Esto parece un problema con avro serde. Es un error abierto. https://issues.apache.org/jira/browse/HIVE-14044.

¿Puedes intentar lo mismo en la colmena 2.0?


0 para la respuesta № 2

Como lo mencionó VJ, hay un problema abierto para el nuevo carácter de línea en avro.

Lo que puede probar un enfoque alternativo es

  1. Separe los datos en una tabla de preparación de la colmena como un archivo de texto.
  2. Crear una tabla avro.
  3. Inserte los datos de la tabla de preparación a la tabla principal de avro en la colmena

Como el carácter de nueva línea se maneja muy bien en formato de archivo de texto