宝贝腿开大点我添添你视频男男,中文字幕熟女人妻av一区二区三区,爱色成人网,大地资源高清播放在线观看在线电影在线观看 ,777米奇影视第四色

集團(tuán)站切換校區(qū)

驗(yàn)證碼已發(fā)送,請查收短信

復(fù)制成功
微信號:togogoi
添加微信好友, 詳細(xì)了解課程
已復(fù)制成功,如果自動跳轉(zhuǎn)微信失敗,請前往微信添加好友
打開微信
圖標(biāo)

學(xué)習(xí)文章

當(dāng)前位置:首頁 > >學(xué)習(xí)文章 > >

{大數(shù)據(jù)}sqoop數(shù)據(jù)遷移

發(fā)布時間: 2018-02-09 09:30:38

導(dǎo)入數(shù)據(jù):MySQL,Oracle導(dǎo)入數(shù)據(jù)到Hadoop的HDFS、HIVE、HBASE等數(shù)據(jù)存儲系統(tǒng);

導(dǎo)出數(shù)據(jù):從Hadoop的文件系統(tǒng)中導(dǎo)出數(shù)據(jù)到關(guān)系數(shù)據(jù)庫;


2.2 工作機(jī)制

將導(dǎo)入或?qū)С雒罘g成mapreduce程序來實(shí)現(xiàn)

在翻譯出的mapreduce中主要是對inputformat和outputformat進(jìn)行定制


2.3 sqoop實(shí)戰(zhàn)及原理

2.3.1 sqoop安裝

安裝sqoop的前提是已經(jīng)具備java和hadoop的環(huán)境


1、下載并解壓最新版下載地址http://ftp.wayne.edu/apache/sqoop/1.4.6/

2、修改配置文件$ cd $SQOOP_HOME/conf

$ mv sqoop-env-template.sh sqoop-env.sh

打開sqoop-env.sh并編輯下面幾行:

export HADOOP_COMMON_HOME= /home/hadoop/apps/hadoop-2.8.1

export HADOOP_MAPRED_HOME=/home/hadoop/apps/hadoop-2.8.1/

export HIVE_HOME=/home/hadoop/apps/hive-1.2.1

3、加入mysql的jdbc驅(qū)動包c(diǎn)p  ~/app/hive/lib/mysql-connector-java-5.1.28.jar   $SQOOP_HOME/lib/

4、驗(yàn)證啟動$ cd $SQOOP_HOME/bin

$ sqoop-version

預(yù)期的輸出:

15/12/17 14:52:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6

Sqoop 1.4.6 git commit id 5b34accaca7de251fc91161733f906af2eddbe83

Compiled by abe on Fri Aug 1 11:19:26 PDT 2015

到這里,整個Sqoop安裝工作完成。


2.4 Sqoop的數(shù)據(jù)導(dǎo)入“導(dǎo)入工具”導(dǎo)入單個表從RDBMS到HDFS。表中的每一行被視為HDFS的記錄。所有記錄都存儲為文本文件的文本數(shù)據(jù)(或者Avro、sequence文件等二進(jìn)制數(shù)據(jù))

2.4.1 語法下面的語法用于將數(shù)據(jù)導(dǎo)入HDFS。?

$ sqoop import (generic-args) (import-args)

?2.4.2 示例

表數(shù)據(jù)在mysql中有一個庫userdb中三個表:emp, emp_add和emp_contact

表emp:

?

表emp_add:?


表emp_conn:

?

?導(dǎo)入表表數(shù)據(jù)到HDFS

?下面的命令用于從MySQL數(shù)據(jù)庫服務(wù)器中的emp表導(dǎo)入HDFS。

?

bin/sqoop import   \

--connect jdbc:mysql://hdp08:3306/sqoopdb   \

--username root  \

--password root   \

--table emp   \

--m 1

?

Hdfs存放文件默認(rèn)路徑/user/hadoop/表名

錯誤一:

17/12/17 22:08:47 INFO mapreduce.Job: Task Id : attempt_1513542008513_0003_m_000000_2, Status : FAILED

Error: java.lang.RuntimeException: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

解決方式:遠(yuǎn)程連接授權(quán)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'hdp08' IDENTIFIED BY 'root' WITH GRANT OPTION;

注意:'myuser'、'mypassword' 需要替換成實(shí)際的用戶名和密碼。

mysql> flush PRIVILEGES;


如果成功執(zhí)行,那么會得到下面的輸出。

?

14/12/22 15:24:54 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5

14/12/22 15:24:56 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.

INFO orm.CompilationManager: Writing jar file: /tmp/sqoop-hadoop/compile/cebe706d23ebb1fd99c1f063ad51ebd7/emp.jar

-----------------------------------------------------

O mapreduce.Job: map 0% reduce 0%

14/12/22 15:28:08 INFO mapreduce.Job: map 100% reduce 0%

14/12/22 15:28:16 INFO mapreduce.Job: Job job_1419242001831_0001 completed successfully

-----------------------------------------------------

-----------------------------------------------------

14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Transferred 145 bytes in 177.5849 seconds (0.8165 bytes/sec)

14/12/22 15:28:17 INFO mapreduce.ImportJobBase: Retrieved 5 records.


為了驗(yàn)證在HDFS導(dǎo)入的數(shù)據(jù),請使用以下命令查看導(dǎo)入的數(shù)據(jù)

?$ $HADOOP_HOME/bin/hadoop fs -cat /user/hadoop/emp/part-m-00000

?emp表的數(shù)據(jù)和字段之間用逗號(,)表示。

?

1201, gopal,    manager, 50000, TP

1202, manisha,  preader, 50000, TP

1203, kalil,    php dev, 30000, AC

1204, prasanth, php dev, 30000, AC

1205, kranthi,  admin,   20000, TP

?

?

導(dǎo)入到HDFS指定目錄在導(dǎo)入表數(shù)據(jù)到HDFS使用Sqoop導(dǎo)入工具,我們可以指定目標(biāo)目錄。

以下是指定目標(biāo)目錄選項(xiàng)的Sqoop導(dǎo)入命令的語法。

--target-dir <new or exist directory in HDFS>

?下面的命令是用來導(dǎo)入emp_add表數(shù)據(jù)到'/queryresult'目錄。

?

bin/sqoop import \

--connect jdbc:mysql://hdp08:3306/sqoopdb \

--username root \

--password root \

--target-dir /work \

--table emp --m 1


?下面的命令是用來驗(yàn)證 /work 目錄中 emp_add表導(dǎo)入的數(shù)據(jù)形式。

?$HADOOP_HOME/bin/hadoop fs -cat /work/part-m-*

?

它會用逗號(,)分隔emp_add表的數(shù)據(jù)和字段。?

?

1201, 288A, vgiri,   jublee

1202, 108I, aoc,     sec-bad

1203, 144Z, pgutta,  hyd

1204, 78B,  oldcity, sec-bad

1205, 720C, hitech,  sec-bad


?導(dǎo)入關(guān)系表到HIVE

?bin/sqoop import --connect jdbc:mysql://hdp08:3306/sqoopdb --username root --password root --table emp --hive-import --m 1

導(dǎo)入崗位是MANAGER,并且是30號部門的員工信息


?導(dǎo)入表數(shù)據(jù)子集

?導(dǎo)入崗位是MANAGER,并且是30號部門的員工信息

?bin/sqoop import --connect jdbc:mysql://hdp08:3306/sqoopdb --username root --password root --where "job='MANAGER' and deptno=30" --table emp --hive-import --m 1


我們可以導(dǎo)入表的使用Sqoop導(dǎo)入工具,"where"子句的一個子集。它執(zhí)行在各自的數(shù)據(jù)庫服務(wù)器相應(yīng)的SQL查詢,并將結(jié)果存儲在HDFS的目標(biāo)目錄。

where子句的語法如下。

?--where <condition>


?下面的命令用來導(dǎo)入emp_add表數(shù)據(jù)的子集。子集查詢檢索員工ID和地址,居住城市為:Secunderabad?

?

bin/sqoop import \

--connect jdbc:mysql://hdp08:3306/sqoopdb \

--username root \

--password root \

--where "city ='sec-bad'" \

--target-dir /wherequery \

--table emp_add --m 1

?

按需導(dǎo)入

?

bin/sqoop import \

--connect jdbc:mysql://hdp08:3306/sqoopdb \

--username root \

--password root \

--target-dir /wherequery2 \

--query 'select id,name,deg from emp WHERE  id>1207 and $CONDITIONS' \

--split-by id \

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

--m 1


?下面的命令用來驗(yàn)證數(shù)據(jù)從emp_add表導(dǎo)入/wherequery目錄?

$HADOOP_HOME/bin/hadoop fs -cat /wherequery/part-m-*

?

它用逗號(,)分隔 emp_add表數(shù)據(jù)和字段。

1202, 108I, aoc, sec-bad

1204, 78B, oldcity, sec-bad

1205, 720C, hitech, sec-bad


增量導(dǎo)入增量導(dǎo)入是僅導(dǎo)入新添加的表中的行的技術(shù)。

它需要添加‘incremental’, ‘check-column’, 和 ‘last-value’選項(xiàng)來執(zhí)行增量導(dǎo)入。

下面的語法用于Sqoop導(dǎo)入命令增量選項(xiàng)。

?--incremental <mode>

--check-column <column name>

--last value <last check column value>

?

假設(shè)新添加的數(shù)據(jù)轉(zhuǎn)換成emp表如下:

1206, satish p, grp des, 20000, GR

下面的命令用于在EMP表執(zhí)行增量導(dǎo)入。

?

bin/sqoop import \

--connect jdbc:mysql://hdp08:3306/sqoopdb \

--username root \

--password root \

--table dept --m 1 \

--incremental append \

--check-column deptno \

--last-value 50

?

以下命令用于從emp表導(dǎo)入HDFS emp/ 目錄的數(shù)據(jù)驗(yàn)證。?

$ $HADOOP_HOME/bin/hadoop fs -cat /user/hadoop/emp/part-m-*

它用逗號(,)分隔 emp_add表數(shù)據(jù)和字段。

1201, gopal,    manager, 50000, TP

1202, manisha,  preader, 50000, TP

1203, kalil,    php dev, 30000, AC

1204, prasanth, php dev, 30000, AC

1205, kranthi,  admin,   20000, TP

1206, satish p, grp des, 20000, GR

?

下面的命令是從表emp 用來查看修改或新添加的行

?$ $HADOOP_HOME/bin/hadoop fs -cat /emp/part-m-*1

這表示新添加的行用逗號(,)分隔emp表的字段。

1206, satish p, grp des, 20000, GR


2.5 Sqoop的數(shù)據(jù)導(dǎo)出將數(shù)據(jù)從HDFS導(dǎo)出到RDBMS數(shù)據(jù)庫

導(dǎo)出前,目標(biāo)表必須存在于目標(biāo)數(shù)據(jù)庫中。

 默認(rèn)操作是從將文件中的數(shù)據(jù)使用INSERT語句插入到表中

 更新模式下,是生成UPDATE語句更新表數(shù)據(jù)


?語法

以下是export命令語法。?

?$ sqoop export (generic-args) (export-args) 

?

1201, gopal,     manager, 50000, TP

1202, manisha,   preader, 50000, TP

1203, kalil,     php dev, 30000, AC

1204, prasanth,  php dev, 30000, AC

1205, kranthi,   admin,   20000, TP

1206, satish p,  grp des, 20000, GR


1、首先需要手動創(chuàng)建mysql中的目標(biāo)表

?$ mysql

mysql> USE db;

mysql> CREATE TABLE employee (

  id INT NOT NULL PRIMARY KEY,

  name VARCHAR(20),

  deg VARCHAR(20),

  salary INT,

  dept VARCHAR(10));


2、然后執(zhí)行導(dǎo)出命令?

?bin/sqoop export \

--connect jdbc:mysql://hdp08:3306/sqoopdb \

--username root \

--password root \

--table emp_bak \

--export-dir /work2


3、驗(yàn)證表mysql命令行。

?

mysql>select * from employee;

如果給定的數(shù)據(jù)存儲成功,那么可以找到數(shù)據(jù)在如下的employee表。

+------+--------------+-------------+-------------------+--------+

| Id   | Name         | Designation | Salary            | Dept   |

+------+--------------+-------------+-------------------+--------+

| 1201 | gopal        | manager     | 50000             | TP     |

| 1202 | manisha      | preader     | 50000             | TP     |

| 1203 | kalil        | php dev     | 30000               | AC     |

| 1204 | prasanth     | php dev     | 30000             | AC     |

| 1205 | kranthi      | admin       | 20000             | TP     |

| 1206 | satish p     | grp des     | 20000             | GR     |

+------+--------------+-------------+-------------------+--------+?

?

?

上一篇: {思科CCIE-RS}OSPF選路規(guī)則(1)基于IOS 12.3 BY亂雪紛飛

下一篇: {大數(shù)據(jù)}輔助系統(tǒng)

十九年老品牌
微信咨詢:gz_togogo 咨詢電話:18127429208 咨詢網(wǎng)站客服:在線客服

相關(guān)課程推薦

在線咨詢 ×

您好,請問有什么可以幫您?我們將竭誠提供最優(yōu)質(zhì)服務(wù)!