Introducció a Apache Sqoop
Apache Sqoop és una eina dissenyada per transferir dades de manera eficient entre Hadoop i bases de dades relacionals. El nom "Sqoop" prové de la combinació de les paraules "SQL" i "Hadoop". Sqoop permet importar dades de bases de dades com MySQL, Oracle, SQL Server, entre d'altres, a Hadoop Distributed File System (HDFS), així com exportar dades des de HDFS a aquestes bases de dades.
Característiques clau de Sqoop:
- Importació de dades: Permet importar dades des de bases de dades relacionals a HDFS, HBase o Hive.
 - Exportació de dades: Permet exportar dades des de HDFS a bases de dades relacionals.
 - Transformació de dades: Suporta transformacions bàsiques de dades durant el procés d'importació/exportació.
 - Integració amb Hadoop: S'integra perfectament amb l'ecosistema Hadoop, aprofitant la potència de MapReduce per a la transferència de dades.
 
Instal·lació i configuració de Sqoop
Requisits previs:
- Java: Sqoop requereix Java per funcionar. Assegura't que Java estigui instal·lat i configurat correctament.
 - Hadoop: Sqoop necessita un clúster Hadoop operatiu.
 - Connector JDBC: Per connectar-se a bases de dades relacionals, Sqoop necessita el connector JDBC adequat.
 
Passos d'instal·lació:
- 
Descarregar Sqoop:
wget http://apache.mirrors.pair.com/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz tar -xvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz mv sqoop-1.4.7.bin__hadoop-2.6.0 /usr/local/sqoop - 
Configurar variables d'entorn: Afegir les següents línies al fitxer
.bashrco.profile:export SQOOP_HOME=/usr/local/sqoop export PATH=$PATH:$SQOOP_HOME/bin - 
Configurar el connector JDBC: Descarregar el connector JDBC per a la base de dades que es vol utilitzar i col·locar-lo al directori
libde Sqoop:cp mysql-connector-java-5.1.48-bin.jar $SQOOP_HOME/lib/ - 
Verificar la instal·lació: Executar la següent comanda per assegurar-se que Sqoop està instal·lat correctament:
sqoop version 
Importació de dades amb Sqoop
Comanda bàsica d'importació:
La comanda bàsica per importar dades des d'una base de dades relacional a HDFS és la següent:
sqoop import --connect jdbc:mysql://localhost/dbname --username user --password pass --table tablename --target-dir /user/hadoop/tablename
Explicació dels paràmetres:
--connect: URL de connexió JDBC a la base de dades.--username: Nom d'usuari de la base de dades.--password: Contrasenya de la base de dades.--table: Nom de la taula a importar.--target-dir: Directori de destinació a HDFS on es guardaran les dades importades.
Exemple pràctic:
Suposem que tenim una base de dades MySQL anomenada company amb una taula employees. Volem importar aquesta taula a HDFS. La comanda seria:
sqoop import --connect jdbc:mysql://localhost/company --username root --password root --table employees --target-dir /user/hadoop/employees
Exportació de dades amb Sqoop
Comanda bàsica d'exportació:
La comanda bàsica per exportar dades des de HDFS a una base de dades relacional és la següent:
sqoop export --connect jdbc:mysql://localhost/dbname --username user --password pass --table tablename --export-dir /user/hadoop/tablename
Explicació dels paràmetres:
--connect: URL de connexió JDBC a la base de dades.--username: Nom d'usuari de la base de dades.--password: Contrasenya de la base de dades.--table: Nom de la taula a la qual s'exportaran les dades.--export-dir: Directori a HDFS des d'on es prendran les dades per exportar.
Exemple pràctic:
Suposem que tenim dades a HDFS al directori /user/hadoop/employees i volem exportar-les a una taula employees a la base de dades MySQL company. La comanda seria:
sqoop export --connect jdbc:mysql://localhost/company --username root --password root --table employees --export-dir /user/hadoop/employees
Exercicis pràctics
Exercici 1: Importar dades
Importa la taula departments de la base de dades company a HDFS al directori /user/hadoop/departments.
Solució:
sqoop import --connect jdbc:mysql://localhost/company --username root --password root --table departments --target-dir /user/hadoop/departments
Exercici 2: Exportar dades
Exporta les dades del directori HDFS /user/hadoop/sales a la taula sales de la base de dades company.
Solució:
sqoop export --connect jdbc:mysql://localhost/company --username root --password root --table sales --export-dir /user/hadoop/sales
Errors comuns i consells
Error: "No suitable driver found"
- Solució: Assegura't que el connector JDBC està present al directori 
libde Sqoop. 
Error: "Access denied for user"
- Solució: Verifica que el nom d'usuari i la contrasenya són correctes i que l'usuari té els permisos necessaris a la base de dades.
 
Consell: Utilitza fitxers de propietats
- Per evitar escriure les credencials de la base de dades a la línia de comandes, pots utilitzar un fitxer de propietats:
Onsqoop import --options-file myoptions.txtmyoptions.txtconté:--connect jdbc:mysql://localhost/company --username root --password root --table employees --target-dir /user/hadoop/employees 
Conclusió
Apache Sqoop és una eina poderosa per transferir dades entre Hadoop i bases de dades relacionals. Amb les comandes d'importació i exportació, pots moure grans volums de dades de manera eficient, aprofitant la potència de l'ecosistema Hadoop. Practica amb els exemples i exercicis proporcionats per familiaritzar-te amb les capacitats de Sqoop i com integrar-lo en els teus fluxos de treball de dades.
Curs de Hadoop
Mòdul 1: Introducció a Hadoop
- Què és Hadoop?
 - Visió general de l'ecosistema Hadoop
 - Hadoop vs Bases de dades tradicionals
 - Configuració de l'entorn Hadoop
 
Mòdul 2: Arquitectura de Hadoop
- Components bàsics de Hadoop
 - HDFS (Sistema de fitxers distribuït de Hadoop)
 - Marc MapReduce
 - YARN (Yet Another Resource Negotiator)
 
Mòdul 3: HDFS (Sistema de fitxers distribuït de Hadoop)
Mòdul 4: Programació MapReduce
- Introducció a MapReduce
 - Flux de treball d'una feina MapReduce
 - Escriure un programa MapReduce
 - Tècniques d'optimització de MapReduce
 
Mòdul 5: Eines de l'ecosistema Hadoop
Mòdul 6: Conceptes avançats de Hadoop
- Seguretat de Hadoop
 - Gestió de clústers de Hadoop
 - Ajust de rendiment de Hadoop
 - Serialització de dades de Hadoop
 
Mòdul 7: Aplicacions reals i estudis de cas
- Hadoop en emmagatzematge de dades
 - Hadoop en aprenentatge automàtic
 - Hadoop en processament de dades en temps real
 - Estudis de cas d'implementacions de Hadoop
 
