Hadoop數(shù)據(jù)分析平臺(tái)實(shí)戰(zhàn)——160Sqoop介紹

離線數(shù)據(jù)分析平臺(tái)實(shí)戰(zhàn)——160Sqoop介紹

Sqoop介紹

Apache Sqoop(SQL-to-Hadoop) 是一款開源的工具,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(mysql、oracle...)間進(jìn)行數(shù)據(jù)的傳遞,可以將一個(gè)關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫中。
一般情況下,是將數(shù)據(jù)分析的結(jié)果導(dǎo)出到關(guān)系型數(shù)據(jù)庫中,供其他部門使用。
Sqoop成立于2009年,剛開始是作為hadoop的一個(gè)模塊而存在的,不過后來為了更好的進(jìn)行部署使用,成為apache基金會(huì)組織的一個(gè)項(xiàng)目。
Sqoop專門為大數(shù)據(jù)而設(shè)計(jì),可以通過分割數(shù)據(jù)集來啟動(dòng)多個(gè)mapreduce程序來處理每個(gè)數(shù)據(jù)塊。

image.png

Sqoop安裝步驟

Sqoop選擇版本sqoop-1.4.5-cdh5.3.6,安裝步驟如下:

  1. 下載:wget http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.5-cdh5.3.6.tar.gz
  2. 解壓,sqoop根目錄為:~/bigdater/sqoop-1.4.5-cdh5.3.6
  3. 復(fù)制相關(guān)的依賴包到lib文件夾中。
  4. 修改conf/sqoop-env.sh文件。
  5. 添加sqoop常量到用戶環(huán)境變量中去。
  6. 測試是否安裝成功。

Sqoop安裝截圖

image.png
image.png

Sqoop命令介紹

Sqoop總共有14個(gè)命令,包括:codegen,create-hive-table, eval, export, help, import, import-all-tables, import-mainframe, job, list-databases, list-tables, merge, metastore, version。其中常用命令為create-hive-table, export, import, help等。

sqoop命令格式:
sqoop <command> <generic-options> <command-options>,也就是說sqoop的所有命令有公用的參數(shù)列表,除此之外每個(gè)命令都有自己特定的執(zhí)行參數(shù)。

help命令

help命令主要作用是查看sqoop提供的幫助信息,
命令格式如下:
sqoop help [<command>]。

help后面的參數(shù)為sqoop支持的命令名稱。
如果不給定help后面的參數(shù),那么表示顯示sqoop命令的幫助信息,如果給定后面的參數(shù),那么表示顯示具體sqoop命令的幫助信息。
實(shí)例:

  1. sqoop help
  2. sqoop help list-tables

list-tables&list-databases命令

list-tables和list-databases兩個(gè)命令都是針對(duì)關(guān)系型數(shù)據(jù)庫(可以通過jdbc連接的數(shù)據(jù)庫/數(shù)據(jù)倉庫)而言的,我們一般可以通過該命令查看對(duì)應(yīng)數(shù)據(jù)庫中的table&database的列表。
基本命令格式為:
sqoop (list-tables|list-databases) --connect jdbc_url --username user_name --password user_pwd
實(shí)例:
sqoop list-tables --connect jdbc:mysql://hh:3306/hive --username hive --password hive
sqoop list-databases --connect jdbc:mysql://hh:3306/hive --username hive --password hive

create-hive-table命令

create-hive-table命令根據(jù)關(guān)系型數(shù)據(jù)庫中的表創(chuàng)建hive表,不進(jìn)行數(shù)據(jù)的copy,只進(jìn)行表結(jié)構(gòu)的copy。如果hive中存在要?jiǎng)?chuàng)建的表,默認(rèn)情況下不進(jìn)行任何操作。
命令格式:
sqoop create-hive-table --connect jdbc_url --username db_name --password db_pwd --table db_table_name --hive-table hive_table_name
實(shí)例:
sqoop create-hive-table --connect jdbc:mysql://hh:3306/test --username hive --password hive --table test --hive-table hivetest

import命令

import命令的主要作用是將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到hdfs文件系統(tǒng)中(或者h(yuǎn)base/hive中),不管是導(dǎo)入到hbase還是導(dǎo)入到hive中,都需要先導(dǎo)入到hdfs中,然后再導(dǎo)入到最終的位置。
一般情況下,只會(huì)采用將關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入到hdfs或者h(yuǎn)ive中,不會(huì)導(dǎo)入到hbase中。
import命令導(dǎo)入到hdfs中默認(rèn)采用','進(jìn)行分割字段值,導(dǎo)入到hive中默認(rèn)采用'\u0001'來進(jìn)行分割字段值,如果有特殊的分割方式,我們可以通過參數(shù)指定。
import命令導(dǎo)入到hive的時(shí)候,會(huì)先在/user/${user.name}/文件夾下創(chuàng)建一個(gè)同關(guān)系型數(shù)據(jù)庫表名的一個(gè)文件夾作為中轉(zhuǎn)文件夾,如果該文件夾存在,則報(bào)錯(cuò)。
可以通過命令sqoop help import查看import命令的幫助信息。

import案例

案例1:將mysql表test中的數(shù)據(jù)導(dǎo)入hive的hivetest表,hive的hivetest表不存在。
案例2:在案例1的基礎(chǔ)上,分別進(jìn)行overwrite導(dǎo)入和into導(dǎo)入。
案例3:在案例2的基礎(chǔ)上,通過增加mysql的test表數(shù)據(jù),增量導(dǎo)入到hive表中。
案例4:將test表中的數(shù)據(jù)導(dǎo)出到使用','分割字段的hive表中。
案例5:將test表的數(shù)據(jù)導(dǎo)入到hdfs中。
案例6:在案例4的基礎(chǔ)上,增量導(dǎo)出數(shù)據(jù)到hdfs中。

export命令

export命令的主要作用是將hdfs文件數(shù)據(jù)導(dǎo)入到關(guān)系型數(shù)據(jù)庫中,不支持從hive和hbase中導(dǎo)出數(shù)據(jù),但是由于hive的底層就是hdfs的一個(gè)基本文件,所以可以將hive導(dǎo)出數(shù)據(jù)轉(zhuǎn)換為從hdfs導(dǎo)出數(shù)據(jù)。
導(dǎo)出數(shù)據(jù)的時(shí)候,默認(rèn)字段分割方式是',',所以如果hive的字段分割不是',',那么就需要設(shè)計(jì)成對(duì)應(yīng)格式的分割符號(hào)。
可以通過命令:sqoop help export查看export命令的詳細(xì)參數(shù)使用方式&各個(gè)參數(shù)的含義。
注意:前提條件,關(guān)系型數(shù)據(jù)庫中目的表已經(jīng)存在。

export案例

案例1:將hdfs上的文件導(dǎo)出到關(guān)系型數(shù)據(jù)庫test2表中。
案例2:將hive表數(shù)據(jù)導(dǎo)出到關(guān)系型數(shù)據(jù)庫test2表中(使用insertOrUpdate方法導(dǎo)入)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1/列出mysql數(shù)據(jù)庫中的所有數(shù)據(jù)庫sqoop list-databases -connect jdbc:mys...
    時(shí)待吾閱讀 2,819評(píng)論 1 5
  • Apache Sqoop 概述 使用Hadoop來分析和處理數(shù)據(jù)需要將數(shù)據(jù)加載到集群中并且將它和企業(yè)生產(chǎn)數(shù)據(jù)庫中的...
    和心數(shù)據(jù)閱讀 1,427評(píng)論 0 8
  • ApacheSqoop是用來實(shí)現(xiàn)結(jié)構(gòu)型數(shù)據(jù)(如關(guān)系數(shù)據(jù)庫)和Hadoop之間進(jìn)行數(shù)據(jù)遷移的工具。 Apache S...
    逃之夭夭li閱讀 1,051評(píng)論 1 1
  • 1.大數(shù)據(jù)協(xié)作框架: 大數(shù)據(jù)協(xié)作框架是Hadoop 2.x生態(tài)系統(tǒng)中幾個(gè)輔助框架。最為常見的是以下幾個(gè): 數(shù)據(jù)轉(zhuǎn)換...
    奉先閱讀 3,200評(píng)論 0 2
  • 韓非的《扁鵲見蔡桓公》是我們中學(xué)學(xué)過的一篇文言文,告訴我們諱疾忌醫(yī)的道理。但現(xiàn)實(shí)是我們懂得道理,但事情發(fā)生在自己身...
    自嗨如醉閱讀 2,278評(píng)論 19 31

友情鏈接更多精彩內(nèi)容