elasticsearch入門系列">elasticsearch入門系列
858
2022-05-30
大家好,我是不溫卜火,是一名計算機學院大數據專業大二的學生,昵稱來源于成語—不溫不火,本意是希望自己性情溫和。作為一名互聯網行業的小白,博主寫博客一方面是為了記錄自己的學習過程,另一方面是總結自己所犯的錯誤希望能夠幫助到很多和自己一樣處于起步階段的萌新。但由于水平有限,博客中難免會有一些錯誤出現,有紕漏之處懇請各位大佬不吝賜教!暫時只有csdn這一個平臺,博客主頁:https://buwenbuhuo.blog.csdn.net/
此篇為大家帶來的是Sqoop常用命令及參數解析。
目錄
一. 常用命令列舉
二. 公用參數
1. 公用參數:數據庫連接
2. 公用參數:import
3. 公用參數:export
4. 公用參數:hive
三. 命令&參數
3.1 命令&參數:import
1. 命令
2. 參數
3.2 命令&參數:export
1. 命令
2. 參數
3.3 命令&參數:codegen
1. 命令
2. 參數
3.4 命令&參數:create-hive-table
1. 命令
2. 參數
3.5 命令&參數:eval
1. 命令
2. 參數
3.6 命令&參數:import-all-tables
1. 命令
2. 參數
3.7 命令&參數:job
1. 命令
2. 參數
3.8 命令&參數:list-databases
1. 命令
3.9 命令&參數:merge
1. 數據環境
2. 命令
3. 參數
3.10 命令&參數:metastore
1. 命令
2. 參數
一. 常用命令列舉
這里給大家列出來了一部分Sqoop操作時的常用參數,以供參考,需要深入學習的可以參看對應類的源代碼。
二. 公用參數
剛才列舉了一些Sqoop的常用命令,對于不同的命令,有不同的參數,讓我們來一一列舉說明。
首先來我們來介紹一下公用的參數,所謂公用參數,就是大多數命令都支持的參數。
1. 公用參數:數據庫連接
2. 公用參數:import
3. 公用參數:export
4. 公用參數:hive
三. 命令&參數
公用參數介紹完之后,我們來按照命令介紹命令對應的特有參數。
3.1 命令&參數:import
將關系型數據庫中的數據導入到HDFS(包括Hive,HBase)中,如果導入的是Hive,那么當Hive中沒有對應表時,則自動創建。
1. 命令
1. 導入數據到hive中
// 密碼我就用000000代替了 $ bin/sqoop import \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --table staff \ --hive-import
1
2
3
4
5
6
7
8
9
2. 增量導入數據到hive中,mode=append
// append導入: $ bin/sqoop import \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --table staff \ --num-mappers 1 \ --fields-terminated-by "\t" \ --target-dir /user/hive/warehouse/staff_hive \ --check-column id \ --incremental append \ --last-value 3
1
2
3
4
5
6
7
8
9
10
11
12
13
提示:append不能與–hive-等參數同時使用(Append mode for hive imports is not yet supported. Please remove the parameter --append-mode)
3. 增量導入數據到hdfs中,mode=lastmodified
// 1 先在mysql中建表并插入幾條數據: mysql> create table company.staff_timestamp(id int(4), name varchar(255), sex varchar(255), last_modified timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); mysql> insert into company.staff_timestamp (id, name, sex) values(1, 'buwen', 'female'); mysql> insert into company.staff_timestamp (id, name, sex) values(2, 'buhuo', 'female'); 先導入一部分數據: $ bin/sqoop import \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --table staff_timestamp \ --delete-target-dir \ --m 1 // 2 再增量導入一部分數據: mysql> insert into company.staff_timestamp (id, name, sex) values(3, 'buwenbuhuo', 'female'); $ bin/sqoop import \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --table staff_timestamp \ --check-column last_modified \ --incremental lastmodified \ --last-value "2020-05-15 22:20:38" \ --m 1 \ --append
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
提示1:使用lastmodified方式導入數據要指定增量數據是要–append(追加)還是要–merge-key(合并)
提示2:last-value指定的值是會包含于增量導入的數據中
2. 參數
3.2 命令&參數:export
從HDFS(包括Hive和HBase)中獎數據導出到關系型數據庫中。
1. 命令
$ bin/sqoop export \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --table staff \ --export-dir /user/company \ --input-fields-terminated-by "\t" \ --num-mappers 1
1
2
3
4
5
6
7
8
9
2. 參數
3.3 命令&參數:codegen
將關系型數據庫中的表映射為一個Java類,在該類中有各列對應的各個字段。
1. 命令
$ bin/sqoop codegen \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --table staff \ --bindir /home/admin/Desktop/staff \ --class-name Staff \ --fields-terminated-by "\t"
1
2
3
4
5
6
7
8
9
2. 參數
3.4 命令&參數:create-hive-table
生成與關系數據庫表結構對應的hive表結構。
1. 命令
$ bin/sqoop create-hive-table \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --table staff \ --hive-table hive_staff
1
2
3
4
5
6
7
2. 參數
3.5 命令&參數:eval
可以快速的使用SQL語句對關系型數據庫進行操作,經常用于在import數據之前,了解一下SQL語句是否正確,數據是否正常,并可以將結果顯示在控制臺。
1. 命令
$ bin/sqoop eval \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --query "SELECT * FROM staff"
1
2
3
4
5
6
7
2. 參數
3.6 命令&參數:import-all-tables
可以將RDBMS中的所有表導入到HDFS中,每一個表都對應一個HDFS目錄
1. 命令
$ bin/sqoop import-all-tables \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 \ --warehouse-dir /all_tables
1
2
3
4
5
6
2. 參數
3.7 命令&參數:job
用來生成一個sqoop任務,生成后不會立即執行,需要手動執行。
1. 命令
$ bin/sqoop job \ --create myjob -- import-all-tables \ --connect jdbc:mysql://hadoop002:3306/company \ --username root \ --password 000000 $ bin/sqoop job \ --list $ bin/sqoop job \ --exec myjob
1
2
3
4
5
6
7
8
9
10
提示1:注意import-all-tables和它左邊的–之間有一個空格
提示2:如果需要連接metastore,則–meta-connect jdbc:hsqldb:hsql://hadoop002:16000/sqoop
2. 參數
提示3:在執行一個job時,如果需要手動輸入數據庫密碼,可以做如下優化
1
2
3
4
5
6
3.8 命令&參數:list-databases
1. 命令
$ bin/sqoop list-databases \ --connect jdbc:mysql://hadoop002:3306/ \ --username root \ --password 000000
1
2
3
4
5
參數:與公用參數一樣
3.9 命令&參數:merge
將HDFS中不同目錄下面的數據合并在一起并放入指定目錄中
1. 數據環境
new_staff 1 AAA male 2 BBB male 3 CCC male 4 DDD male old_staff 1 AAA female 2 CCC female 3 BBB female 6 DDD female
1
2
3
4
5
6
7
8
9
10
11
提示:上邊數據的列之間的分隔符應該為\t,行與行之間的分割符為\n,如果直接復制,請檢查之
。
2. 命令
// 創建JavaBean: $ bin/sqoop codegen \ --connect jdbc:mysql://hadoop102:3306/company \ --username root \ --password 000000 \ --table staff \ --bindir /home/admin/Desktop/staff \ --class-name Staff \ --fields-terminated-by "\t" // 開始合并: $ bin/sqoop merge \ --new-data /test/new/ \ --onto /test/old/ \ --target-dir /test/merged \ --jar-file /home/admin/Desktop/staff/Staff.jar \ --class-name Staff \ --merge-key id // 結果: 1 AAA MALE 2 BBB MALE 3 CCC MALE 4 DDD MALE 6 DDD FEMALE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
3. 參數
3.10 命令&參數:metastore
記錄了Sqoop job的元數據信息,如果不啟動該服務,那么默認job元數據的存儲目錄為~/.sqoop,可在sqoop-site.xml中修改。
1. 命令
// 啟動sqoop的metastore服務 $ bin/sqoop metastore
1
2
3
2. 參數
本次的分享就到這里了,
好書不厭讀百回,熟讀課思子自知。而我想要成為全場最靚的仔,就必須堅持通過學習來獲取更多知識,用知識改變命運,用博客見證成長,用行動證明我在努力。
如果我的博客對你有幫助、如果你喜歡我的博客內容,請“” “評論”“”一鍵三連哦!聽說的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。
碼字不易,大家的支持就是我堅持下去的動力。后不要忘了關注我哦!
Hive 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。