Apache Sqoop匯入 匯出

2021-10-02 03:08:56 字數 4909 閱讀 3092

sqoop import \

--driver com.mysql.jdbc.driver \

--connect jdbc:mysql://centos:3306/test?characterencoding=utf-8 \

--username root \

--password root \

--table t_user \

--fields-terminated-by '\t' \

--target-dir /mysql/test/t_user \

--delete-target-dir

引數

含義–-connect

連線的資料庫位址

-–username

連線的資料庫的使用者名稱

–-password

連線的資料庫的密碼

–-table

想要匯出資料的表

–target-dir

要匯入到hdfs中的目錄(如果不指定,預設儲存在「/user/使用者名稱/匯入的表名」 目錄下)

-–delete-target-dir

表示如果在hdfs中有該目錄,則先刪除,然後再匯入資料到該目錄下

表示設定的maptask個數,預設為4個,決定最終在hdfs中生成的檔案個數(將table中的資料分成幾個檔案分別儲存)

–fields-terminated-by

指定欄位的分割符號

sqoop import \

--driver com.mysql.jdbc.driver \

--connect jdbc:mysql://centos:3306/test?characterencoding=utf-8 \

--username root \

--password root \

--table t_user \

--columns id,name,age \

--where "id > 2 or name like '%z%'" \

--target-dir /mysql/test/t_user \

--delete-target-dir \

--fields-terminated-by '\t'

字段

含義–columns

指定要查詢的字段

–where

指定過濾條件

sqoop import \

--driver com.mysql.jdbc.driver \

--connect jdbc:mysql://centos:3306/test \

--username root \

--password root \

--fields-terminated-by '\t' \

--query 'select id, name,***, age ,birthday from t_user where $conditions limit 100 ' \

--split-by id \

--target-dir /mysql/test/t_user \

--delete-target-dir

如果要並行匯入查詢結果,則每個map任務將需要執行查詢的副本,其結果由sqoop推斷的邊界條件進行分割槽。您的查詢必須包含令牌$conditions,每個sqoop程序將用唯一條件表示式替換該令牌。您還必須使用--split-by選擇拆分列。

sqoop import \

--connect jdbc:mysql://centos:3306/test \

--username root \

--password root \

--table t_user \

--hive-import \

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

--hive-overwrite \

--hive-table baizhi.t_user

[root@centos ~]# cp /usr/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar /usr/sqoop-1.4.7/lib/

[root@centos ~]# cp /usr/apache-hive-1.2.2-bin/lib/hive-exec-1.2.2.jar /usr/sqoop-1.4.7/lib/

sqoop import \

--connect jdbc:mysql://centos:3306/test \

--username root \

--password root \

--table t_user \

--hive-import \

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

--hive-overwrite \

--hive-table baizhi.t_user \

--hive-partition-key city \

--hive-partition-value 'bj'

sqoop import \

--connect jdbc:mysql://centos:3306/test \

--username root \

--password root \

--table t_user \

--hbase-table baizhi:t_user1 \

--column-family cf1 \

--hbase-create-table \

--hbase-row-key id \

--hbase-bulkload

引數

含義–hbase-table

寫入hbase中的表

–column-family

匯入的列簇

–hbase-create-table

建立表–hbase-row-key

指定字段作為rowkey

–hbase-bulkload

啟動hbase 批量寫入

0	zhangsan	true	20	2020-01-11

1 lisi false 25 2020-01-10

3 wangwu true 30 2020-01-17

create

table t_user(

id int

primary

keyauto_increment

, name varchar(32

),*** boolean

, age int

, birthday date

)character

set=utf8;

sqoop-export \

--connect jdbc:mysql://centos:3306/test \

--username root \

--password root \

--table t_user \

--update-key id \

--update-mode allowinsert \

--export-dir /mysql/test/t_user \

--input-fields-terminated-by '\t'

匯入模式可選值可以是updateonly或者allowinsert,updateonly僅僅會更新已經存在的記錄。

1、現將hbase資料->hive

[root@centos ~]

# hive -e 'use baizhi;create table t_tmp as select * from t_employee'

create

table t_employee(empno int

, ename varchar(32

),job varchar(32

),mgr int

, hiredate timestamp

, sal decimal(7

,2),

comm decimal(7

,2),

deptno int

)

2、將hive資料匯出到mysql

sqoop-export \

--connect jdbc:mysql://centos:3306/test \

--username root \

--password root \

--table t_employee \

--export-dir '/user/hive/warehouse/baizhi.db/t_tmp' \

--input-fields-terminated-by '\001' \

--input-null-string '\\n' \

--input-null-non-string '\\n'

;

引數

含義–export-dir

需要讀取的檔案位置

–input-fields-terminated-by

字段分割符號

–input-null-string

對於一些字串字段,出現該值認為是null

–input-null-non-string

對於一些字串非空字段,出現該值認為是null

Apache Sqoop效能調整

sqoop是apache基礎提供的一種工具,在大資料世界中通常用於異構關聯式資料庫 rdbms 和hadoop 分布式檔案系統 hdfs 之間的匯入 匯出數百萬條記錄。這種資料傳輸可能導致不同的載入時間,從幾分鐘到幾個小時不等。此方案是全世界資料工程師在引擎蓋下檢視微調設定的情況。效能調整的目標是在...

mysql 匯入匯出 mysql匯入匯出sql檔案

window下 1.匯出整個資料庫 mysqldump u 使用者名稱 p 資料庫名 匯出的檔名 mysqldump u dbuser p dbname dbname.sql 2.匯出乙個表 mysqldump u 使用者名稱 p 資料庫名 表名 匯出的檔名 mysqldump u dbuser p...

mysql匯入匯出教程 mysql匯入匯出資料方法

摘要 在平時的mysql應用中,總會碰到匯入資料,匯出資料,當然有很多方法,這篇文章,主要介紹應用mysqlmysqldump命令進行資料匯入匯出,希望對大家有所幫助。一 mysql匯入檔案或資料或執行相關sql mysql h主機位址 u使用者名稱 p使用者密碼 1.檔案形式。shell命令列 m...