在sqoop中,「匯入」概念指:從非大資料集群(rdbms)向大資料集群(hdfs,hive,hbase)中傳輸資料,叫做:匯入,即使用import關鍵字。
1) 確定mysql服務開啟正常
2) 在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), *** varchar(255));
mysql> insert into company.staff(name, ***) values('thomas', 'male');
mysql> insert into company.staff(name, ***) values('catalina', 'female');
3) 匯入資料
(1)全部匯入
$ bin/sqoop import \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--table staff \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"
(2)查詢匯入
$ bin/sqoop import \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select name,*** from staff where id <=3 and $conditions;'
尖叫提示:must contain '$conditions' in where clause.
尖叫提示:如果query後使用的是雙引號,則$conditions前必須加轉移符,防止shell識別為自己的變數。
(3)匯入指定列
$ bin/sqoop import \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns id,*** \
--table staff
尖叫提示:columns中如果涉及到多列,用逗號分隔,分隔時不要新增空格
(4)使用sqoop關鍵字篩選查詢匯入資料
$ bin/sqoop import \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--table staff \
--where "id=2"
尖叫提示:在sqoop中可以使用sqoop import -d property.name=property.value這樣的方式加入執行任務的引數,多個引數用空格隔開。
$ bin/sqoop import \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--table staff \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table staff_hive
尖叫提示:該過程分為兩步,第一步將資料匯入到hdfs,第二步將匯入到hdfs的資料遷移到hive倉庫
尖叫提示:第一步預設的臨時目錄是/user/admin/表名
在sqoop中,「匯出」概念指:從大資料集群(hdfs,hive,hbase)向非大資料集群(rdbms)中傳輸資料,叫做:匯出,即使用export關鍵字。
$ bin/sqoop export \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--export-dir /user/hive/warehouse/staff_hive \
--table staff \
--num-mappers 1 \
--input-fields-terminated-by "\t"
尖叫提示:mysql中如果表不存在,不會自動建立
思考:資料是覆蓋還是追加
使用opt格式的檔案打包sqoop命令,然後執行
1) 建立乙個.opt檔案
$ mkdir opt
$ touch opt/job_hdfs2rdbms.opt
2) 編寫sqoop指令碼
$ vi opt/job_hdfs2rdbms.opt
export
--connect
jdbc:mysql://hadoop104:3306/company
--username
root
--password
--table
staff
--num-mappers
--export-dir
/user/hive/warehouse/staff_hive
--input-fields-terminated-by
"\t"
3) 執行該指令碼
$ bin/sqoop --options-file opt/job_hdfs2rdbms.opt
php mysql簡單留言,適合新手
html head title title style p,textarea style head body form action submit.php method post p 名字 input type text name username p ptextarea cols 30 rows ...
Flutter 一些很適合新手練習的Demo
google推出flutter這樣乙個新的高效能跨平台 android,ios 快速開發框架之後,被業界許多開發者所關注。我在接觸了flutter之後發現這個確實是乙個好東西,好東西當然要和大家分享,對吧。我和大家一樣,最開始接觸到flutter的時候,發現有大量的官方widget。但是真正要想實現...
Sqoop (二)Sqoop 的簡單使用案例
二 匯出資料 三 指令碼打包 在sqoop中,匯入 概念指 從非大資料集群 rdbms 向大資料集群 hdfs,hive,hbase 中傳輸資料,叫做 匯入,即使用import關鍵字。確定mysql服務開啟正常 在mysql中新建一張表並插入一些資料 mysql uroot p000000 mysq...