Sqoop-簡單實用案例(一)導入數據


四、Sqoop的簡單使用案例

一、導入數據

大致過程:

導入數據:import

Sqoop import

連接MySQL

用戶名

密碼

導入的那張表(MR-輸入)

導入到HDFS的目錄(MR-輸出)

判斷目錄是否存在,如果存在就刪除~

設置Map的數量、設置數據導入到文件當中的格式-比如:分隔符

在Sqoop中,“導入”概念指:從非大數據集群(RDBMS)向大數據集群(HDFS,HIVE,HBASE)中傳輸數據,叫做:導入,即使用import關鍵字。

二、RDBMSHDFS

1) 確定Mysql服務開啟正常

2) 這個可以先略-Mysql中命令行創建表:

    在Mysql中新建一張表並插入一些數據

$ mysql -uroot -p000000

mysql> create database company;

mysql> create table company.staff(id int(4) primary key not null auto_increment, name varchar(255), sex varchar(255));

mysql> insert into company.staff(name, sex) values('Thomas', 'Male');

mysql> insert into company.staff(name, sex) values('Catalina', 'FeMale');

3) 導入數據

先新建一個名為test的數據庫:

 

再新建一張表student:

 

注意:要啟動集群:因為要上傳到HDFS

1)全部導入整張表導入)

$ bin/sqoop import \

--connect jdbc:mysql://bigdata111:3306/test \

--username root \

--password 000000 \

--table student \

--target-dir /user/MYSQLTOHDFS/student \

--delete-target-dir \

--num-mappers 1 \

--fields-terminated-by "\t"

 參數無先后,這是個邏輯上的順序~

查看HDFS文件:

 

查看上傳上去的student文件夾中的內容:

[root@bigdata111 sqoop-1.4.6]# hdfs dfs -cat /user/MYSQLTOHDFS/student/*

 

2)查詢導入

$ bin/sqoop import \

--connect jdbc:mysql://bigdata111:3306/test \

--username root \

--password 000000 \

--target-dir /user/MYSQLTOHDFS/student \

--delete-target-dir \

--num-mappers 1 \

--fields-terminated-by "\t" \

--query 'select name,sex from student where id <=6 and $CONDITIONS;'

尖叫提示:must contain '$CONDITIONS' in WHERE clause.單引號的話$就不用轉義符號\     

注:CONDITIONS 翻譯‘條件’

尖叫提示:如果query后使用的是雙引號,則$CONDITIONS前必須加轉義符\,防止shell識別為自己的變量。

 

3)導入指定列

$ bin/sqoop import \

--connect jdbc:mysql://bigdata111:3306/test \

--username root \

--password 000000 \

--target-dir /user/MYSQLTOHDFS/student \

--delete-target-dir \

--num-mappers 1 \

--fields-terminated-by "\t" \

--columns id,name \

--table student

尖叫提示:columns中如果涉及到多列,用逗號分隔,分隔時不要添加空格

解釋輸入的命令行:

sqoop import \

#sqoop 導入 換行

--connect jdbc:mysql://bigdata111:3306/test \

#連接數據庫用jdbc連接:mysql數據庫://數據庫所在的主機名:MySQL指定端口3306/數據庫名 換行

--username root \

#用戶名 換行

--password 000000 \

#密碼 換行

--target-dir /user/MYSQLTOHDFS/student \

#指定上傳到到HDFS上的目錄 換行(target-目標)

--delete-target-dir \

#如果存在就刪除這個目錄 換行

--num-mappers 1 \

#map的數量 換行

--fields-terminated-by "\t" \

#每列的分隔符 換行

--columns id,name \

#選取的列的名字 換行

--table student

#選擇的數據庫名

4)使用sqoop關鍵字篩選查詢導入數據

$ bin/sqoop import \

--connect jdbc:mysql://bigdata111:3306/test \

--username root \

--password 000000 \

--target-dir /user/MYSQLTOHDFS/student \

--delete-target-dir \

--num-mappers 1 \

--fields-terminated-by "\t" \

--table student \

--where "id=2"

尖叫提示:在Sqoop中可以使用sqoop import -D property.name=property.value這樣的方式加入執行任務的參數,多個參數用空格隔開。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM