apache sqoop(sql-to-hadoop)專案旨在協助rdbms與hadoop之間進行高效的大資料交流。使用者可以通過 sqoop 輕鬆地把關係型資料庫的資料匯入到 hadoop 及其相關的系統 (如hbase和hive)中;同時也可以把資料從 hadoop 系統裡抽取並匯出到關係型資料庫裡。
sqoop是乙個在結構化資料和hadoop之間進行批量資料遷移的工具,結構化資料可以是mysql、oracle等rdbms。sqoop底層用mapreduce程式實現抽取、轉換、載入,mapreduce天生的特性保證了並行化和高容錯率。
sqoop import \
--connect jdbc:mysql:
//single:
3306
/mysqltest \
--username root \
--password kb10 \
--query "select sid,student_id,course_id,score from score where \$conditions" \
--target-dir /kb10/test1119 \
--split-by sid \
-m 2 \
--check-column sid \
--last-value 0
* 首先表明要連線的資料庫型別,客戶機的ip位址或者主機名,資料庫名稱,使用者名稱和密碼。* 可以通過命令 table 來指定匯入某一張表,也可以通過查詢命令 query 來獲取指定字段內容。
* \$conditions 通過 check-column 和 last-value 結合實現增量匯入資料的條件。
* 首次匯入為全量匯入,last-value 為 0。增量匯入資料時 last-value 為當前已匯入資料行數。
* target-dir 指定資料匯入目錄。
sqoop import \
--connect jdbc:mysql:
//single:
3306
/kb10 \
--username root \
--password kb10 \
--table student \
--hive-import \
--hive-table test1118 \
--fields-terminated-by '|' \
--hive-overwrite \
--delete-target-dir
* delete-target-dir 表示如果目錄已存在則刪除* 從關係型資料庫向hive匯入資料,無需指定路徑,會自動儲存到之前手動建立的目錄下
/opt/software/hadoop/hive110/warehouse
sqoop import \
--connect jdbc:mysql:
//single:
3306
/kb10 \
--username root \
--password kb10 \
--table student \
--hbase-table kb10:mysql_stu \
--column-family score \
--hbase-create-table \
--hbase-row-key stuno \
--hbase-bulkload
* hbase-table 指定命名空間和表名* column-family 指定列簇名
* hbase-row-key 指定行鍵(排序字段),必須是**中存在的欄位名
* hbase-bulkload 不用指定輸出的路徑,自動資料轉移
* 若表不存在,可以通過 hbase-create-table 命令自動建立
* 也可以在shell視窗下手動建立,需要指定命名空間、表名、列簇名
//建立命名空間
create_namespace school
//hbase手動建表,school為命名空間,mysql_school為表名,後面三個為列簇名
create 'school:mysql_school'
,'basicscore'
,'classinfo'
,'scoreinfo'
//使用columns從資料庫的表中刪選部分字段匯入hbase
sqoop import \
--connect jdbc:mysql:
//single:
3306
/school \
--username root \
--password kb10 \
--table stu_info \
--columns id,stuname,stugender,province,city,district \
--hbase-table school:mysql_school \
--column-family basicinfo \
--hbase-row-key id \
--hbase-bulkload
//如果使用query語句則無需--hbase-bulkload
//查詢語句後面必須有where $conditions
sqoop import \
--connect jdbc:mysql:
//single:
3306
/school \
--username root \
--password kb10 \
--query 'select id,proname,classname,opendate from stu_info where $conditions' \
--hbase-table school:mysql_school \
--column-family classinfo \
--hbase-row-key id \
* hbase 內容為 byte[ ],shell 視窗下中文無法正常顯示,如下圖
create table hive_shop
( id int
, name varchar(50
),mobile varchar(20
),address varchar
(100),
vol2020 int
);
sqoop export \
--connect jdbc:mysql:
//single:
3306
/kb10 \
--username root \
--password kb10 \
--table hive_shop \
--columns id,name,mobile,address,vol2020 \
--fields-terminated-by ',' \
--export-dir '/kb10/shop1118/000000_0'
* fields-terminated-by 表示原表字段分隔符* export-dir 表示匯出檔案路徑,hdfs和hive的檔案儲存路徑有所不同
//插入資料
insert overwrite directory '/kb10/shop1118/'
row format delimited
fields terminated by ','
stored as textfile
select
shopid,
shopname,
contact.mobile mobile,
concat_ws(''
,address) address,
volumn[
'2020'
] vol2020
from shop;
//匯出資料
export table table_name [partition (part_column=
"value"[,
...]
)]to 'export_target_path'
[for
replication
('event_id'
)]
//上傳資料
load data [local] inpath 'hdfs_path' into table [partition (part_column=
"value"[,
...]
)];//匯入資料
import [
[external] table new_table [partition (part_column=
"value"[,
...]
)]]from 'source_path'
[location 'import_target_path'
]
C SFTP資料傳輸
我們有些客戶公司的資料比較重要,為了安全集團公司內部都使用的是區域網,但是有時候又不得不予外界網際網路做資料互動,所以有些不重要的系統是放在外界網際網路的,這樣以來內部系統和外部系統的資料互動就成為了問題,這樣以來就使用到了sftp伺服器來作為資料傳輸的中介。下面不說了,直接上c 此處使用了第三方動...
資料傳輸方式
資料傳輸方式 1 並行傳輸與序列傳輸 並行傳輸指的是資料以成組的方式,在多條並行通道上同時進行傳輸。常用的就是將構成一 個字元 的幾位二進位製碼,分別在幾個並行通道上進行傳輸。例如,採用8單位 的字 符 可以用8個通道並行傳輸。一次傳送乙個字元,因此收 發雙方不存在字元的同步問題,不需要另加 起 止...
flex wcf 資料傳輸
最近跟哲子做個專案,本來可以用asp.net輕鬆搞定,但是鑑於大家都比較想試用下學習已久的技術,所以便出現了flex與wcf entity這樣得前後臺組合。專案開始之初,著實為兩者之間的互動頭疼一番,在經過大量資料得獲取後,終於解決,以下寫出簡要的注意事項,由於wcf 我還是個徹頭徹尾的門外漢,資料...