Red de conocimiento informático - Material del sitio web - Cómo pasar de Oracle a Hive

Cómo pasar de Oracle a Hive

Cómo usar Sqoop para importar datos de Oracle a Hive

Importar datos

Establecer HADOOP_HOME

$ HADOOP_HOME=/path/to/some/hadoop sqoop import - -argumentos...

Descargue el Sqoop apropiado y extráigalo al disco duro. El llamado apropiado significa que la versión de Sqoop debe ser consistente con la versión de Hadoop. Mi versión de Hadoop es 1.03 y la versión de Sqoop descargada es 1.4.2.

$ tar zvxf sqoop-1.4.2.bin__hadoop-1.0.0.tar.gz

Descargue el controlador JDBC correspondiente y coloque el controlador JDBC descargado en la carpeta lib de Sqoop.

Descargue el controlador JDBC correspondiente y coloque el controlador JDBC descargado en la carpeta lib de Sqoop.

Importar datos

$ sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username NOMBRE DE USUARIO --contraseña CONTRASEÑA - -verbose -m 1 --table TABLENAME

DBNAME: nombre de la base de datos

USERNAME: nombre de usuario

CONTRASEÑA: contraseña

TABLENAME: tabla nombre

-m: el número de procesos simultáneos que importarán datos, el valor predeterminado es 4. Si se están importando datos, la tabla no se puede importar. El valor predeterminado es 4. Si está importando una pequeña cantidad de datos, puede configurarlo en 1 para acelerar la importación. En términos generales, Sqoop divide los datos de manera uniforme utilizando claves primarias. En el caso de la importación simultánea, puede consultar la documentación oficial para configurar las columnas divididas relevantes.

Si Oracle está instalado en una computadora remota, asegúrese de que Sqoop pueda hacer ping a la computadora donde se encuentra Oracle. Por ejemplo, si Oracle está instalado en Win7, es posible que deba desactivar el firewall de Win7. Además, Oracle debe configurarse para acceso remoto.

Tenga en cuenta que los nombres de usuarios y tablas deben estar en mayúsculas a menos que se creen con mayúsculas y minúsculas mixtas entre comillas.

Un error muy extraño

Durante el proceso de importación de datos, encontré un problema, es decir, no aparecía ningún mensaje de error al importar, y también vi los archivos relacionados generados en HDFS Sin embargo, cuando se utiliza el comando MOSTRAR TABLAS en Hive, no se pueden ver las tablas recién importadas. Hay dos soluciones en este punto. Una es usar manualmente el comando CREAT para crear la tabla en Hive y luego SELECCIONARLA, y encontrará que hay datos en la tabla. Entonces, mi suposición (solo una suposición) podría ser que los metadatos de la tabla no se escriben en Hive después de la importación. Busqué información relevante y descubrí que Hive almacena metadatos en Derby de forma predeterminada, por lo que consideré cambiar Derby a MySQL.

Método: /s/blog_3fe961ae0101925l.html

Almacenar los metadatos en MySQL y luego importarlos. No hay problema.

Importación incremental

Otro problema es que si queremos importar contenido nuevo en la tabla, podemos usar tres parámetros --check-column, --incremental y --last- valor, donde --check-column especifica la columna que se va a verificar, --incremental especifica algún modo incremental y solo hay dos valores legales, agregar y última modificación. Si --incremental se modifica por última vez, Sqoop importará registros cuyo valor en la columna (que es la marca de tiempo) especificada por --check-column esté más cerca de la marca de tiempo especificada por --last-value. Por ejemplo, el siguiente comando importa todos los registros con un valor de ID de columna mayor que 4.

$ sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username NOMBRE DE USUARIO --contraseña CONTRASEÑA --verbose -m 1 --table NOMBRE DE TABLA --ID de columna de verificación --añadir incremental --último valor 4