2012-04-11 11 views
5

Tengo un archivo de texto separado por pestañas en HDFS, y quiero exportarlo a una tabla MySQL.Cómo usar autoincrement-IDs en la exportación Sqoop

Dado que las filas en el archivo de texto no tienen identificadores numéricos, ¿cómo exportaré a una tabla con un ID establecido automáticamente durante el SQL INSERT (autoincrement)?

Si trato de exportar (id siendo el último atributo definido en la tabla), consigo

java.util.NoSuchElementException 
    at java.util.AbstractList$Itr.next(AbstractList.java:350) 
    at entity.__loadFromFields(entity.java:996) 

Si tomo la clase autogenerada y modificarlo para excluir la id-atributo, consigo

java.io.IOException: java.sql.SQLException: No value specified for parameter 27 

donde el parámetro 27 es 'id'.

Versión 1.3.0 es Sqoop-cdh3u3

Respuesta

3

I n Sqoop 1.4.1, escribiendo un "nulo" en la posición del campo de archivo de texto correspondiente al campo de autoincrement trabajado para mí. Después de exportar a mySQL, verá un ID incrementado y automáticamente asignado.

+0

No puedo probar esto, pero suponiendo que está funcionando, esta es la solución más elegante. – thomers

+0

FYI: Literalmente, cita nulo en la consulta. Intentaba exportar desde Hadoop a una tabla de Rails MySQL. Como la tabla de Rails tenía un campo de autoaumento de ID, intenté agregar : ... "nulo" como id, ... como el primer campo en la consulta de Hive. ¡Funcionó muy bien! ¡TY Jorge! –

0

Como alguien en la lista de correo Sqoop sugirió:

  • crear una tabla temporal sin el ID
  • Sqoop-exportación en esta tabla
  • Copiar las filas de esta tabla en la tabla final (que tiene el ID de autoincrement)
0

Mi tabla fuente está en HIVE. Lo que funciona para mí es que agrego una columna llamada id int y llene la columna como NULL. Después de sqoop, el mysql recibirá los valores de inserción (id, X, Y) (null, "valor_x, y_valor"). Luego, mysql sabe completar el id como autoincremento.

Cuestiones relacionadas