国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

使用Sqoop進行數(shù)據(jù)遷移

2022-09-07 12:00:38黃明輝
科教導(dǎo)刊·電子版 2022年20期
關(guān)鍵詞:關(guān)系數(shù)據(jù)庫環(huán)境變量配置文件

黃明輝

(湖北三峽職業(yè)技術(shù)學(xué)院電子信息學(xué)院,湖北 宜昌 443000)

1 概述

Sqoop是一種旨在有效地在ApacheHadoop和關(guān)系數(shù)據(jù)庫等結(jié)構(gòu)化數(shù)據(jù)存儲之間傳輸大量數(shù)據(jù)的工具,結(jié)構(gòu)化數(shù)據(jù)可以是MySQL、Oracle等RDBMS。Sqoop底層用MapReduce程序?qū)崿F(xiàn)抽取、轉(zhuǎn)換、加載,MapReduce良好的特性保證了并行化和高容錯率,而且相比 Kettle等傳統(tǒng)ETL工具,任務(wù)運行在Hadoop集群上,減少了ETL服務(wù)器資源的使用情況。在特定場景上,抽取過程會有很大的性能提升。

可以使用Sqoop工具將數(shù)據(jù)從關(guān)系數(shù)據(jù)庫管理系統(tǒng)導(dǎo)入(import)到Hadoop分布式文件系統(tǒng)中,或者將Hadoop中數(shù)據(jù)轉(zhuǎn)換導(dǎo)出(export)關(guān)系數(shù)據(jù)庫管理系統(tǒng),其功能如圖1所示。

圖1 Sqoop功能

(1)導(dǎo)入原理。

在導(dǎo)入數(shù)據(jù)之前,Sqoop使用JDBC檢查導(dǎo)入的數(shù)據(jù)表,檢索出表的所有列以及列的SQL數(shù)據(jù)類型,并將這些SQL類型映射為Jave數(shù)據(jù)類型,在轉(zhuǎn)換后的MapReduce應(yīng)用中使用這些對應(yīng)的Jave類型來保存字段的值,Sqoop的代碼生成器使用這些信息來創(chuàng)建對應(yīng)表的類,用于保存從表中抽取的記錄。

(2)導(dǎo)出原理。

在導(dǎo)出數(shù)據(jù)之前,Sqoop會根據(jù)數(shù)據(jù)庫連接字符串來選擇一個導(dǎo)出方法,對于大部分系統(tǒng)來說,Sqoop會選擇JDBC。Sqoop會根據(jù)目標(biāo)表的定義生成一個Jave類,這個生成的類能夠從文本中解析出記錄數(shù)據(jù),并能夠向表中插入類型合適的值,然后啟動一個MapReduce作業(yè),從HDFS中讀取源數(shù)據(jù)文件,使用生成的類解析出記錄,并且執(zhí)行選定的導(dǎo)出方法。

2 Sqoop安裝配置

Sqoop的安裝配置非常簡單,前提是部署Sqoop工具的機器需要具備Jave和Hadoop的運行環(huán)境。本文是以穩(wěn)定版本Sqoop-1.4.6為例。

(1)Sqoop安裝。

將安裝包上傳至Hadoop01主點的/export/software目錄中,并解壓至/export/serers路徑下,然后對解壓包進行重命名,具體指令如下:

$tar–zxvf sqoop-1.4.6.bin_hadoop-2.0.4-alpha.tar.gz–C/export/servers/

$mv sqoop-1.4.6.bin_hadoop-2.0.4-alpha/dqoop-1.4.6

執(zhí)行完上述Sqoop的下載解壓后,就完成了Sqoop的安裝。

(2)Sqoop配置。

先進入Sqoop解壓包目錄中的conf文件夾目錄下,將 sqoop-env-template.sh文件復(fù)制并重命名為 sqoopenv.sh,對該文件中的如下內(nèi)容進行修改。

exportHDAOOOP_COMMON_HOME=/export/servers/hadoop-2.7.4

export HDAOOOP_MAPRED_HOME=/export/servers/hadoop-2.7.4

export HIVE_HOME=/export/servers/hadoop-1.2.1-bin

在sqooop-evn.sh配置文件中,需要配置的是Sqoop運行時必環(huán)境的安裝目錄,Sqoop運行在Hadoop之上,因此必須指定Hadoop環(huán)境。另外在配置文件中還要根據(jù)需要自定義配置HBase、Hive和Zookeeper等環(huán)境變量。

為了后續(xù)方便Sqoop的使用和管理,可以配置Sqoop系統(tǒng)環(huán)境變量。使用“vi/etc/profile”指令進入profile文件,在文件底部進一步添加如下內(nèi)容類配置Sqoop系統(tǒng)環(huán)境變量。

export SQOOP_HOME=/export/servers/sqoop-1.4.6

export PATH=$PATH:$SQOOP_HOME/bin

配置完成后直接保存退出,接著執(zhí)行“source/etc/profile”指令刷新配置文件即可。

當(dāng)完成前面Sqoop的相關(guān)配置后,還需要根據(jù)所操作的關(guān)系數(shù)據(jù)庫添加對應(yīng)的JDBC驅(qū)動包,用于數(shù)據(jù)庫連接。本文將針對MySQL數(shù)據(jù)庫進行遷移操作,所以需要將mysql-connector-java-5.1.23.jar包上傳至 Sqoop解壓包目錄的lib文件夾下。

(3)Sqoop效果測試。

執(zhí)行完上述 Sqoop的安裝配置操作后,就可以執(zhí)行Sqoop相關(guān)指令來驗證Sqoop的執(zhí)行效果了,具體指令如下。

$sqoop list-databases

-connect jdbc:mysql://localhost:3306

--username root–password 123456

上述指令中,sqooplist-databases用于輸出連接本地的MySQL數(shù)據(jù)庫中的所有數(shù)據(jù)庫名,如果正確返回指定地址的MySQL數(shù)據(jù)庫信息,那么說明Sqoop配置完成。

3 使用Sqoop將數(shù)據(jù)從MySQL導(dǎo)入HDFS

(1)數(shù)據(jù)準(zhǔn)備。

在MySQL中有一個表student,表的數(shù)據(jù)如下表:

表1 student數(shù)據(jù)表

確定HDFS、MySQL已啟動。

cd/usr/local/hadoop

./sbin/start-dfs.sh

Service mysql restart

mysql-u roop-p

(2)在MySQL中新建一張表并插入一些數(shù)據(jù)。

use mysql;

create table student(

sid char(10)primary key,

sname char(10)not null,

sex varchar(10)null,

birthday date null,

class char(16)null,

dep varchar(20)null

);

insert into student values(10001,'gopal','male','2002-06-02','1','computer');

insertintostudentvalues(10002,'andy','male','2002-01-05','2','electromechanical');

insert into student values(10003,'lily','female','2001-05-06','3','computer');

導(dǎo)入表的所有數(shù)據(jù)至HDFS

./bin/sqoop import

--connect jdbc:mysql://localhost:3306/mysql

--username root

--password'hadoop'

--table student

-m l

--fields-terminated-by' '

檢查導(dǎo)入結(jié)果

通過hdfs命令檢查導(dǎo)入結(jié)果:

hdfs dfs-cat/user/hadoop/student/part-m-00000

10001,gopal,male

10002,andy,male

10003,lily,female

4 作用Sqoop將數(shù)據(jù)從HDFS導(dǎo)出MySQL

在導(dǎo)出前需要先創(chuàng)建待導(dǎo)出的表的結(jié)構(gòu),如果導(dǎo)出的表在數(shù)據(jù)庫中不存在會報錯;如果重復(fù)導(dǎo)出表,表中的數(shù)據(jù)也會重復(fù)出現(xiàn)。

(1)在MySQL下創(chuàng)建表。

create table student_demo(

sid char(10)primary key,

sname char(10)not null,

sex varchar(10)null,

birthday date null,

class char(16)null,

dep varchar(20)null

);

(2)指定分隔符導(dǎo)出表的所有列。

./bin/sqoop export

--connect jdbc:mysql://localhost:3306/mysql

--username root

--password'hadoop'

--table student_demo

--fields-terminated-by' '

--lines-terminated-by' '

--export-dir path/user/hadoop/student

-m l

在MySQL Shell界面輸入select*from student_demo查看導(dǎo)出表的數(shù)據(jù),如圖1所示。

圖1

說明:每執(zhí)行一次,數(shù)據(jù)都會插入MySQL中,所以在執(zhí)行之前根據(jù)需要將表中的數(shù)據(jù)刪除后再導(dǎo)入。

猜你喜歡
關(guān)系數(shù)據(jù)庫環(huán)境變量配置文件
關(guān)系數(shù)據(jù)庫在高爐數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
山東冶金(2022年2期)2022-08-08 01:51:30
提示用戶配置文件錯誤 這樣解決
從桌面右鍵菜單調(diào)用環(huán)境變量選項
搭建簡單的Kubernetes集群
互不干涉混用Chromium Edge
徹底弄懂Windows 10環(huán)境變量
忘記ESXi主機root密碼怎么辦
基于三階段DEA—Malmquist模型的中國省域城鎮(zhèn)化效率測度及其收斂分析
基于三階段DEA—Malmquist模型的中國省域城鎮(zhèn)化效率測度及其收斂分析
基于索引結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索
文水县| 拉萨市| 淮南市| 乳山市| 吉林省| 南陵县| 福海县| 绵竹市| 信阳市| 黑龙江省| 大英县| 苏尼特左旗| 志丹县| 洪洞县| 义马市| 仙桃市| 芒康县| 大荔县| 山东| 大埔区| 灵台县| 普安县| 武鸣县| 会同县| 济宁市| 三明市| 怀仁县| 临潭县| 溆浦县| 垦利县| 乃东县| 铜鼓县| 石柱| 平舆县| 曲周县| 浮梁县| 清涧县| 关岭| 乐都县| 潜江市| 安陆市|