Sunteți pe pagina 1din 7

########################### SQOOP PRACTICE ######################################

##copy the mysql jdbc connector to VM machine desktop

##Extract the mysql-connector-java-5.1.39.tar.gz

##copy the mysql-connector-java-5.1.39-bin.jar from extracted folder to /usr/lib/sqoop/lib


##to copy it we need super user login using sudo

[~]$ sudo cp Desktop/mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar


/usr/lib/sqoop/lib/

##login to mysql ****** Copy Hemp & Hdept to /tmp

[cloudera@localhost ~]$ mysql --user root

##create a database

show databases;

CREATE DATABASE sqoop_db;

show databases;

use sqoop_db;

show tables;

###create table employees for the tab delimited file Hemp.txt available in /tmp
****************MYSQL****************************
CREATE TABLE employees
(empid int,
name varchar(15),
salary int,
deptid int);
CREATE TABLE departments
(deptid int,
deptname varchar(15));
--copy file Hemp & Hdept from desktop to /tmp
cp Desktop/Hemp.txt /tmp/
cp Desktop/Hdept.txt /tmp/

##Load data from /tmp/Hemp.txt into table employees

LOAD DATA INFILE '/tmp/Hemp.txt' INTO TABLE employees;

##Load data from /tmp/Hdept.txt into table departments

LOAD DATA INFILE '/tmp/Hdept.txt' INTO TABLE departments;

SELECT * FROM employees;


SELECT * FROM departments;

############################################
create following tables

create table emp as select * from employees limit 5;

create table emp1 as select * from employees limit 10;

create table emp2 as select * from employees limit 15;

##Grant all privileges to any user on localhost on sqoop db

GRANT ALL PRIVILEGES ON sqoop_db TO ''@'localhost';


##Now lets transfer data from mysql employees table to HDFS , default directory i.e. directory
created by sqoop with table name

**********************************************************************************
hadoop fs -ls

sqoop import --connect jdbc:mysql://localhost/sqoop_db --table employees --username root -m 1

##now confirm the transfer in hdfs

hadoop fs -ls ##we will see a directory named employees as sqoop will create one with the table
name

hadoop fs -ls employees ##we will see 3 files

hadoop fs -cat employees/part-m-00000 ##file containing data of employees table from


mysql db

**********************************************************************************
****************************
Now lets transfer data from employees table to HDFS , a explicit directory name mentioned by us
(the name we mention should not be a existing directory name)
**********************************************************************************
****************************

sqoop
import
--connect jdbc:mysql://localhost/sqoop_db
--table employees
--username root
--target-dir msqp_dir/emp
-m 1

hadoop fs -ls

hadoop fs -ls msqp_dir

hadoop fs -ls msqp_dir/emp

hadoop fs -cat msqp_dir/emp/part-m-00000


**********************************************************************************
****************************
Now lets transfer data from any table to HDFS , a explicit warehouse directory name mentioned by
us
We ca use the same warehouse directory name for all sqoop table imports from mysql to hdfs
By default, Sqoop will create a directory with the same name as the imported table inside your home
directory on HDFS and import all data there
**********************************************************************************
**************************** warehouse-dir is resusable directory

hadoop fs -ls

sqoop import --connect jdbc:mysql://localhost/sqoop_db --table employees --username root


--warehouse-dir sq_dir
-m 1

sqoop import --connect jdbc:mysql://localhost/sqoop_db --table departments --username root


--warehouse-dir sq_dir -m 1

**********************************************************************************
****************************
Now lets transfer all tables from mysql sqoop_db to HDFS , delete any existing same name
directories as table names from hdfs location
**********************************************************************************
****************************

mysql > show tables;

hadoop fs -rmr (employees,emp,departments remove the directories)

sqoop import-all-tables --connect jdbc:mysql://localhost/sqoop_db --username root -m 1

**********************************************************************************
****************
Now lets transfer all rows with salary < 5000 from employees to HDFS
**********************************************************************************
*****************
sqoop import --connect jdbc:mysql://localhost/sqoop_db --table employees
--where 'salary<5000'
--target-dir empsal
--username root -m 1
**********************************************************************************
****************************
Now lets transfer only empid,name,deptid columns from employees to HDFS
**********************************************************************************
***************************
sqoop import --connect jdbc:mysql://localhost/sqoop_db --table employees
--columns "empid,name,deptid"
--target-dir empcols
--username root -m 1

**********************************************************************************
****************************
spilt the employees data in mysql table into 4 files on hdfs while importing using sqoop
**********************************************************************************
****************************
sqoop import --connect jdbc:mysql://localhost/sqoop_db
--table employees
--warehouse-dir sq_dir /empnew
--username root
--split-by empid
-m 4

**********************************************************************************
***************************
create only table structure in hive database based on mysql table
**********************************************************************************
****************************

sqoop
create-hive-table
--connect jdbc:mysql://localhost/sqoop_db
--table emp1
--username root
**********************************************************************************
****************************
create and import data same time in hive db from mysql table
**********************************************************************************
****************************

sqoop
import
--connect jdbc:mysql://localhost/sqoop_db
--table emp2
--username root
--hive-import
-m 1

**********************************************************************************
****************************
create and import data same time in hive db from mysql table, default delimiter is none and hence
we mention a delimiter explicitly
**********************************************************************************
****************************

sqoop import
--connect jdbc:mysql://localhost/sqoop_db
--table departments
--username root
--hive-import
--fields-terminated-by '@'
-m 1

**********************************************************************************
****************************

Export data from hive table data to mysql table using sqoop
**********************************************************************************
****************************

##create table empx in mysql


mysql>
mysql> create table deptx as select * from departments where 1=0;
mysql> select * from deptx;
##export data from hive warehouse directory
=======Transfering data from hive table to existing table in mysql====

sqoop export
--connect jdbc:mysql://localhost/sqoop_db
--table deptx
--export-dir '/user/hive/warehouse/departments'
--fields-terminated-by '@'
--username root

##Confirm table in mysql for data


mysql> select * from deptx;

S-ar putea să vă placă și