您好,登錄后才能下訂單哦!
Sqoop介紹
Sqoop是一個(gè)用來將Hadoop和關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)相互轉(zhuǎn)移的工具,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(例如 : MySQL ,Oracle ,Postgres等)中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫中。
對于某些NoSQL數(shù)據(jù)庫它也提供了連接器。Sqoop,類似于其他ETL工具,使用元數(shù)據(jù)模型來判斷數(shù)據(jù)類型并在數(shù)據(jù)從數(shù)據(jù)源轉(zhuǎn)移到Hadoop時(shí)確保類型安全的數(shù)據(jù)處理。Sqoop專為大數(shù)據(jù)批量傳輸設(shè)計(jì),能夠分割數(shù)據(jù)集并創(chuàng)建Hadoop任務(wù)來處理每個(gè)區(qū)塊。
1.sqoop下載
https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.7/
2.sqoop上傳到服務(wù)器 并解壓到相應(yīng)的目錄
3.修改sqoop的配置文件
4.修改配置文件
5.拷貝sqoop需要的mysql 數(shù)據(jù)庫驅(qū)動(dòng)
cp /home/nflow/servers/hive/lib/mysql-connector-java-5.1.26-bin.jar /home/nflow/servers/sqoop-1.4.7/lib/
6.啟動(dòng)sqoop測試 (可以看出連接數(shù)據(jù)庫了)
./sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root --password 123456
7.sqoop導(dǎo)入數(shù)據(jù)
從博主拿過來的sql
drop database if exists userdb; create database userdb; use userdb; drop table if exists emp; drop table if exists emp_add; drop table if exists emp_conn; CREATE TABLE emp( id INT NOT NULL, name VARCHAR(100), deg VARCHAR(100), salary BIGINT, dept VARCHAR(50) ); CREATE TABLE emp_add( id INT NOT NULL, hno VARCHAR(50), street VARCHAR(50), city VARCHAR(50) ); CREATE TABLE emp_conn( id INT NOT NULL, phno VARCHAR(50), email VARCHAR(50) ); insert into emp values(1201,'gopal','manager','50000','TP'); insert into emp values(1202,'manisha','Proof reader','50000','TP'); insert into emp values(1203,'khalil','php dev','30000','AC'); insert into emp values(1204,'prasanth','php dev','30000','AC'); insert into emp values(1205,'kranthi','admin','20000','TP'); insert into emp_add values(1201,'288A','vgiri','jublee'); insert into emp_add values(1202,'108I','aoc','sec-bad'); insert into emp_add values(1203,'144Z','pgutta','hyd'); insert into emp_add values(1204,'78B','old city','sec-bad'); insert into emp_add values(1205,'720X','hitec','sec-bad'); insert into emp_conn values(1201,'2356742','gopal@tp.com'); insert into emp_conn values(1202,'1661663','manisha@tp.com'); insert into emp_conn values(1203,'8887776','khalil@ac.com'); insert into emp_conn values(1204,'9988774','prasanth@ac.com'); insert into emp_conn values(1205,'1231231','kranthi@tp.com'); ———————————————— ####感謝此博主 版權(quán)為別人的版權(quán) 我只是試用下 版權(quán)聲明:本文為CSDN博主「記錄每一份筆記」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/yumingzhu1/article/details/80678525
從mysql 到 hdfs
#/bin/bash ./bin/sqoop import \ --connect jdbc:mysql://192.168.249.10:3306/userdb \ --username root \ --password 123456 \ --table emp \ --m 1 [nflow@hadoop-master1 sqoop-1.4.7]$ pwd /home/nflow/servers/sqoop-1.4.7 [nflow@hadoop-master1 sqoop-1.4.7]$ 默認(rèn)導(dǎo)出的位置為 /usr/用戶/表名 數(shù)據(jù)庫不能用localhost或者127.0.0.1 不然會報(bào)錯(cuò) 必須要用IP地址
HDFS 目錄下次在導(dǎo)入不能重復(fù)
重新修改腳本如下 這樣每次都可以生成新的
mysql數(shù)據(jù)導(dǎo)入到hive里面
數(shù)據(jù)庫數(shù)據(jù)
./sqoop import \ --connect jdbc:mysql://192.168.249.10:3306/userdb \ ##userdb --username admin \ #數(shù)據(jù)庫admin用戶 --password 123456 \ #數(shù)據(jù)庫admin用戶的密碼 --table emp_add \ #數(shù)據(jù)庫admin里面的emp_add表 --delete-target-dir \ #每次刪除 --num-mappers 1 \ ##mapreduce 進(jìn)程個(gè)數(shù) --hive-import \ ##指定hive --hive-database default \ ##hive的默認(rèn)數(shù)據(jù)庫 --hive-table empadd \ ##hive里面 default 數(shù)據(jù)的表名稱 --fields-terminated-by '\t' ###換行
sqoop再次導(dǎo)入同一張表測試 測試結(jié)果為 如果數(shù)據(jù)庫有新增的數(shù)據(jù) 那么hive將會也會拿過來,導(dǎo)致重復(fù) 如下圖,如何避免這個(gè)問題呢 sqoop的增量同步
#######sqoop增量同步到hive
id大于1207 的會同步 不會導(dǎo)致重復(fù)
./sqoop import \ --connect jdbc:mysql://192.168.249.10:3306/userdb \ --username admin \ --password 123456 \ --table emp_add \ --num-mappers 1 \ --hive-import \ --hive-database default \ --hive-table empadd \ --fields-terminated-by '\t' \ --incremental append \ --check-column id \ --last-value 1207
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。