Sqoop的簡單使用案例

2021-10-08 12:47:41 字數 3854 閱讀 6469

rdbms到hive

rdbms到hbase

hive/hdfs到rdbms

指令碼打包

1.確定mysql服務開啟正常

2.在mysql中新建一張表並插入一些資料

$ mysql -uroot -proot

mysql> create database company;

mysql> create table company.

staff

(id int(4

) primary key not null auto_increment, name varchar

(255

), *** varchar

(255))

;mysql> insert into company.

staff

(name, ***)

values

('thomas'

,'male');

mysql> insert into company.

staff

(name, ***)

values

('catalina'

,'female'

);

3.匯入資料

全部匯入

bin/sqoop import \

--connect jdbc:mysql:

//hadoop102:

3306

/company \

--username root \

--password root \

--table staff \

--target-dir /user/company \

--delete

-target-dir \

--fields-terminated-by "\t"

查詢匯入
bin/sqoop import \

--connect jdbc:mysql:

//hadoop102:

3306

/company \

--username root \

--password root \

--target-dir /user/company \

--delete

-target-dir \

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

--query 'select name,*** from staff where id <=1 and $conditions;'

如果query後使用的是雙引號,則$conditions前必須加轉移符,防止shell識別為自己的變數。

匯入指定列

bin/sqoop import \

--connect jdbc:mysql:

//hadoop102:

3306

/company \

--username root \

--password root \

--target-dir /user/company \

--delete

-target-dir \

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

--columns id,*** \

--table staff

使用sqoop關鍵字篩選查詢匯入資料

bin/sqoop import \

--connect jdbc:mysql:

//hadoop102:

3306

/company \

--username root \

--password root \

--target-dir /user/company \

--delete

-target-dir \

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

--table staff \

--where "id=1"

bin/sqoop import \

--connect jdbc:mysql:

//hadoop102:

3306

/company \

--username root \

--password root \

--table staff \

--hive-import \

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

--hive-overwrite \

--hive-table staff_hive

bin/sqoop import \

--connect jdbc:mysql:

//hadoop102:

3306

/company \

--username root \

--password root \

--table company \

--columns "id,name,***" \

--column-family "info" \

--hbase-create-table \

--hbase-row-key "id" \

--hbase-table "hbase_company" \

--split-by id

解決方案:手動建立hbase表

hbase> create 'hbase_company,'info'
在hbase中scan這張表得到如下內容

hbase> scan 『hbase_company』
bin/sqoop export \

--connect jdbc:mysql:

//hadoop102:

3306

/company \

--username root \

--password root \

--table staff \

--export

-dir /user/hive/warehouse/staff_hive \

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

使用opt格式的檔案打包sqoop命令,然後執行

建立乙個.opt檔案

mkdir opt

touch opt/job_hdfs2rdbms.opt

編寫sqoop指令碼

vi opt/job_hdfs2rdbms.opt
export

--connect

jdbc:mysql:

//hadoop102:

3306

/company

--username

root

--password

root

--table

staff1--

export

-dir

/user/hive/warehouse/staff_hive

--input-fields-terminated-by

"\t"

執行該指令碼

bin/sqoop --options-file opt/job_hdfs2rdbms.opt

Sqoop (二)Sqoop 的簡單使用案例

二 匯出資料 三 指令碼打包 在sqoop中,匯入 概念指 從非大資料集群 rdbms 向大資料集群 hdfs,hive,hbase 中傳輸資料,叫做 匯入,即使用import關鍵字。確定mysql服務開啟正常 在mysql中新建一張表並插入一些資料 mysql uroot p000000 mysq...

Sqoop 的簡單使用案例

1 匯入資料 在 sqoop 中,匯入 概念指 從非大資料集群 rdbms 向大資料集群 hdfs,hive,hbase 中傳輸資料,叫做 匯入,即使用 import 關鍵字。1 rdbms 到 hdfs 1 確定 mysql 服務開啟正常 2 在 mysql 中新建一張表並插入一些資料 mysql...

Sqoop的簡單使用案例

4.1 匯入資料 在sqoop中,匯入 概念指 從非大資料集群 rdbms 向大資料集群 hdfs,hive,hbase 中傳輸資料,叫做 匯入,即使用import關鍵字。4.1.1 rdbms到hdfs 1 確定mysql服務開啟正常 2 在mysql中新建一張表並插入一些資料 mysql uro...