Existen dos alternativas validas, por linea de comandos o mediante HUE.
Si optamos por hacerlo mediante HUE hay que tener en cuenta que para poder conectarnos con el navegador debemos modificar el siguiente parámetro con Cloudera Manager en la configuración de HUE :
A partir de aquí, nos conectamos a la máquina y creamos una carpeta para hacer las pruebas y poner el archivo csv en un hdfs, para ello ejecutaremos :
sudo -u hdfs hadoop fs -mkdir /user/test
Ahora haremos que nuestro usuario, en este caso root, tenga permisos sobre esta carpeta :
sudo -u hdfs hadoop fs -chown root /user/test
Acto seguido, realizamos un put del archivo .csv en la carpeta que acabamos de crear :
hadoop fs -put MOCK_DATA2.csv /user/test/mockdata.csv
Para ver que efectivamente los datos se han introducido correctamente en el hdfs, podemos listar el contenido de la carpeta con :
hadoop fs -ls /user/test/
O listar el contenido de este fichero con :
hadoop fs -cat /user/test/mockdata.csv
Ahora crearemos nuestras tablas en hive a partir del archivo, tenemos dos opciones, HUE y linea de comandos :
HUE
Nos conectamos a HUE con la ip del namenode y el puerto 8888 (nos tenemos que asegurar que el puerto esta escuchando por tcp y no por tcp6, para ello podemos hacer un netstat --listen, si esta escuchando por tcp6, debemos desactivarlo, revisar post anterior).
Seleccionamos Data Browser -> Tablas de Metastore -> Crear una nueva tabla a partir de un archivo. Ponemos un nombre a nuestra tabla y seleccionamos el archivo con los datos
Al tratarse de un csv, seleccionaremos el delimitador como ',' en el siguiente paso :
Ahora nos recomienda un tipo de datos según lo que ha visto del csv, lo dejaremos igual y modificaremos los nombres de las columnas :
Si nos dirigimos ahora a Query editors -> Hive (o Impala si lo tenemos disponible) y refrescamos la lista de tablas, veremos la que acabamos de crear sin datos (la tabla está vacía, solo hemos creado el esquema a partir de los datos del csv)
Para importar datos clickamos sobre el ojo y seleccionamos importar datos, antes de seleccionar el archivo, deberemos volver a la linea de comando de nuestro nodo y darle permisos sobre la carpeta donde esta el hdfs al usuario admin (si no falla la importación a causa de no poder mover el archivo), para ello :
sudo -u hdfs hadoop fs -chown admin /user/test
Ahora ya tendremos los datos importados en nuestra tabla example2.
Linea de comandos
Iniciamos el shell de hive escribiendo :
hive
una vez aquí creamos una tabla :
create table example3(id int,name String,surname String,email String,countr String,ip String) row format delimited fields terminated by ',' stored as textfile;
Podemos hacer
show tables;
para ver todas las tablas que tenemos en hive en este momento
Para hacer la carga de datos :
LOAD DATA INPATH '/user/test/mockdata.csv' OVERWRITE INTO TABLE example3;
Ahora ya podremos comprobar que existen datos mediante una select des de el prompt de hive (no olvidar el ; al final de la query)
Si queremos descargar los conectores ODBC / JDBC para Impala o Hive lo podéis hacer des de este enlace.
NOS SALVASTE EL SEMESTRE!
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola buenas tardes, te ha pasado que al cargar el archivo este no se cargue completo a la tabla que creaste? estoy cargando un cvs de mas de 9 millones de registro con el siguiente comando en HIVE
ResponderEliminarload data inpath '/user/cloudera/trazado/Detalle_Registros_GPS_20170401_2.csv' OVERWRITE into table tp_detalleregistro;
que podría estar haciendo mal??