java mysql hive sqoop hortonworks-data-platform

Java-MySQL para Hive Import donde MySQL se ejecuta en Windows y Hive ejecuta en Cent OS(Horton Sandbox)



sqoop hortonworks-data-platform (1)

Sí, puedes hacerlo a través de ssh. Horton Sandbox viene con soporte ssh preinstalado. Puede ejecutar el comando sqoop a través del cliente ssh en Windows. O si quieres hacerlo programáticamente (eso es lo que hice en Java), tienes que seguir este paso.

  1. Descargue la biblioteca de sshxcute java: https://code.google.com/p/sshxcute/
  2. Agregue a la ruta de compilación de su proyecto java que contiene el siguiente código Java

import net.neoremind.sshxcute.core.SSHExec; import net.neoremind.sshxcute.core.ConnBean; import net.neoremind.sshxcute.task.CustomTask; import net.neoremind.sshxcute.task.impl.ExecCommand; public class TestSSH { public static void main(String args[]) throws Exception{ // Initialize a ConnBean object, parameter list is ip, username, password ConnBean cb = new ConnBean("192.168.56.102", "root","hadoop"); // Put the ConnBean instance as parameter for SSHExec static method getInstance(ConnBean) to retrieve a singleton SSHExec instance SSHExec ssh = SSHExec.getInstance(cb); // Connect to server ssh.connect(); CustomTask sampleTask1 = new ExecCommand("echo $SSH_CLIENT"); // Print Your Client IP By which you connected to ssh server on Horton Sandbox System.out.println(ssh.exec(sampleTask1)); CustomTask sampleTask2 = new ExecCommand("sqoop import --connect jdbc:mysql://192.168.56.101:3316/mysql_db_name --username=mysql_user --password=mysql_pwd --table mysql_table_name --hive-import -m 1 -- --schema default"); ssh.exec(sampleTask2); ssh.disconnect(); } }

Antes de cualquier respuesta y comentarios. Intenté varias opciones que encontré en Stackoverflow pero terminé con un error. Los siguientes son esos enlaces:

Lo intenté en Horton Sandbox a través de la línea de comando y lo logré.

sqoop import --connect jdbc:mysql://192.168.56.101:3316/database_name --username=user --password=pwd --table table_name --hive-import -m 1 -- --schema default

Donde 192.168.56.101 es para Windows y 192.168.56.102 para Horton Sandbox 2.6.

Ahora quiero hacer lo mismo desde Java, donde ese código Java se ejecuta en otro lugar, pero no en el arenero de Horton.

  • Cómo ubicar HIVE_HOME y otros parámetros de Sqoop porque se están ejecutando en Sandbox.
  • parámetros que tengo que pasar Debería pasar como SqoopOptions o Sqoop.runTools String Array Arguments. Ambos fallaron.
  • También me confundo cuando importo la biblioteca (com.cloudera.sqoop y org.apache.sqoop) y obtengo esto

El método run (com.cloudera.sqoop.SqoopOptions) en el tipo ImportTool no es aplicable para los argumentos (org.apache.sqoop.SqoopOptions) con estas dos líneas (el parámetro de opción se agrega entre estas dos líneas)

SqoopOptions options = new SqoopOptions(); int ret = new ImportTool().run(options);

si elijo el método Cloudera, obsoleto, pero si elijo el método de ejecución, no acepta el argumento de opciones

Estoy involucrado en esto desde semanas. Por favor ayuda.