Sqoop的安裝匯入和匯出
阿新 • • 發佈:2020-11-29
-
Sqoop作用以及安裝
-
Sqoop的使用
1. Sqoop的簡介
Sqoop是一款開源的工具,主要用於在Hadoop(Hive)與傳統的資料庫(mysql,postgresql)見進行資料的傳遞,可以將一個關係型資料庫(mysql,oracle,postgres)中的資料導進到Hadoop的HDFS中,也可以將HDFS的資料到進到關係型庫中。
2. Sqoop作用以及安裝
- Sqoop專案開始於2009年,最早是作為Hadoop的一個第三方模組存在,後來為了讓使用者能夠快速部署,也為了讓開發人員能夠更快速的迭代開發,Sqoop獨立成為Apache專案。
- 下載Sqoop
- 安裝配置Sqoop
- 上傳檔案到LinuX的app目錄
- 解壓檔案
- tar -zxvf sqoop-1.4.6-cdh5.7.0.tar.gz
- 修改/homehadoop01/app/sqoop-1.4.6-cdh5.7.0/bin/configure-sqoop檔案
- 把其中關於Zookeep和HBase的行都註釋掉,除非叢集已經安裝了Zoopkep和HBase
- 修改環境變數
- root使用者,主節點執行,在/etc/profile檔案末尾追加:
-
- export SQOOP_HOME=檔案路徑
- export PATH=$SQOOP_HOME/bin:$PATH
- 立即生效:source/etc/profile
- 拷貝mysql的jdbc.jar檔案sqoop的lib目錄
- 驗證安裝是否成功:sqoop version
- sqoop list-database --connect jdbc:mysql://master:3306/ --username root -P
2. Sqoop的使用
在導資料的時候需要兩個hive的包(hive-conn.... hive-exce...)複製到sqoop的lib下
-
- Sqoop是一個用來講Hadoop和關係型資料庫中的資料相互轉移的工具,可以將一個關係型資料庫中的資料導進到Hadoop的HDFS中,也可以將HDFS的資料到進到關係型資料庫中。
- MySQL到HDFS
- MySQL到HDFS
-
Mysql建表: 在MySQL中執行: create table Persons( id int, name varchar(50), age int ); insert into Persons values (1,'楊過',20),(2,'小龍女',21),(3,'張無忌',22); sqoop import \ --connect jdbc:mysql://master:3306/test \ --username root \ --password 123456 \ --table Persons \ --target-dir '/opt/11-25' \ --fields-terminated-by ',' \ --m 1 解釋: connect:連線資料庫的驅動 usernaem:使用者 password:密碼 table:mysql的表 target-dir '路徑':目標路徑(HDFS的路徑) fields-delimitd-by:擷取方式 m 1 :用幾個map框架
-
- where 條件新增 (必須寫在單引號之中)
-
sqoop import \ --connect jdbc:mysql://master:3306/test \ --username root \ --password 123456 \ --table Persons \ --where 'id = 1 or id = 3' \ --target-dir '/opt/11-25-2' \ --fields-terminated-by ',' \ --m 1;
-
- query查詢 必須以:AND $CONDITIONS 結尾
-
sqoop import \ --connect jdbc:mysql://master:3306/test \ --username root \ --password 123456 \ --query 'select * from Persons where age = 22 AND $CONDITIONS' \ --target-dir '/opt/11-25-3' \ --fields-terminated-by ',' \ --m 1;
-
- MySQL到HDFS
- MySQL匯入資料到Hive
-
Hive建表: create database test; use database create table Persons( id int, name varchar(50), age int )row format delimited fields terminated by ','; 本地執行: sqoop import \ --connect jdbc:mysql://master:3306/test \ --username root \ --password 123456 \ --table Persons \ --delete-target-dir \ --hive-import \ --hive-database test \ --hive-table Persons \ --fields-terminated-by ',' \ -m 1;
-
- Hive匯出資料到MySQL
-
MySQL建表: create table stu( id int, name varchar(50), age int ); export sqoop export \ --connect jdbc:mysql://master:3306/test \ --username root \ --password 123456 \ --table stu \ --export-dir "/user/hive/warehouse/test.db/persons/part-m-00000" \ --input-fields-terminated-by ',' \ -m 1;
解釋:export-dir "/user/hive/warehouse/test.db/persons/part-m-00000" \:要匯出的路徑
input-fields-terminated-by ',' \:匯入的擷取方式
-