日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Sqoop的基础应用

發(fā)布時(shí)間:2023/11/27 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sqoop的基础应用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

實(shí)驗(yàn)?zāi)康囊?/strong>

  1. 了解ET了工具Sqoop;
  2. 學(xué)會(huì)安裝配置Sqoop;
  3. 學(xué)會(huì)使用數(shù)據(jù)遷移框架Sqoop;
  4. 使用Sqoop導(dǎo)入MySQL到HDFS和Hive;
  5. 使用Sqoop導(dǎo)出HDFS數(shù)據(jù)到MySQL;

實(shí)驗(yàn)環(huán)境

  1. Java jdk 1.7;
  2. apache-maven-3.6.0;
  3. Myeclipse C10;
  4. CDH Hadoop集群;
  5. 已配置MySQL數(shù)據(jù)庫(kù);
  6. 已配置Sqoop工具;
  7. 具體規(guī)劃:

主機(jī)名

IP地址

服務(wù)描述

Cmaster

192.168.159.170

主控節(jié)點(diǎn)

Cslaver1

192.168.159.171

數(shù)據(jù)節(jié)點(diǎn)

Cslaver2

192.168.159.172

數(shù)據(jù)服務(wù)

?

?

?

?

?

實(shí)驗(yàn)內(nèi)容

任務(wù)一: 啟動(dòng)CDH_Hadoop集群,并檢查sqoop工具;

1、進(jìn)入控制臺(tái)頁(yè)面;

2、啟動(dòng)相關(guān)組件;

?

?

任務(wù)二:使用Sqoop;

1、準(zhǔn)備MySQL數(shù)據(jù)庫(kù)數(shù)據(jù);

2、使用Sqoop測(cè)試與MySQL的連通;

命令:

sqoop import \

--connect jdbc:mysql://192.168.159.170:3306/sqoop \

--username root \

--password 123456 \

?

3、使用Sqoop導(dǎo)入MySQL數(shù)據(jù)到HDFS;

命令:

sqoop import \

--connect jdbc:mysql://192.168.159.170:3306/sqoop \

--username root \

--password 123456 \

--table emp -m 1 \

--columns "empno,ename,job,sal,comm" \

--target-dir emp_column \

--delete-target-dir

?

?

4、使用指定壓縮格式及存儲(chǔ)格式;

命令:

sqoop import \

> --connect jdbc:mysql://192.168.159.170:3306/sqoop \

> --username root \

> --password 123456 \

> --table emp \

> -m 1 \

> --columns "empno,ename,job,sal,comm" \

> --target-dir emp_parquet \

> --delete-target-dir \

> --as-parquetfile \

> --compression-codec org.apache.hadoop.io.compress.SnappyCodec

?

5、使用指定分隔符;

命令:

sqoop import \

--connect jdbc:mysql://192.168.159.170:3306/sqoop \

--username root \

--password 123456 \

--table emp -m 1 \

--columns "EMPNO,ENAME,JOB,SAL,COMM" \

--target-dir emp_colimn_split \

--delete-target-dir \

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

--lines-terminated-by '\n'

6、導(dǎo)入指定條件的數(shù)據(jù);

命令:

sqoop import? \

--connect jdbc:mysql://192.168.159.170:3306/sqoop \

--username root \

--password 123456 \

--table emp -m 1 \

--columns "EMPNO,ENAME,JOB,SAL,COMM" \

--target-dir emp_colimn_where \

--delete-target-dir \

--where 'SAL>2000'

7、導(dǎo)入指定查詢語(yǔ)句的數(shù)據(jù);

命令:

sqoop import \

--connect jdbc:mysql://192.168.159.170:3306/sqoop \

--username root \

--passw 123456 \

--target-dir emp_column_query \

--delete-target-dir \

--query 'select * from emp where EMPNO>=7900 and $CONIONS' \

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

--lines-terminated-by '\n' -m 1 \

--split-by 'emp'

?

8、使用Sqoop導(dǎo)出HDFS數(shù)據(jù)到MySQL;

命令:

>create table emp_demo as select * from emp where 1=2;

命令:

$hdfs dfs -mkdir -p /usr/hadoop/emp

命令:

sqoop export \

--connect jdbc:mysql://192.168.159.170:3306/sqoop \

--username root \

--password 123456 \

--table emp_demo \

--export-dir /usr/hadoop/emp -m 1

?

9、導(dǎo)出指定字段

命令:

hdfs dfs -mkdir -p /usr/hadoop/emp_colum

hdfs dfs -ls /usr/hadoop/

命令:

sqoop export \

> --connect jdbc:mysql://192.168.159.170:3306/sqoop \

> --username root \

> --password 123456 \

> --table emp_demo \

> --columns "EMPNO,ENAME,JOB,SAL,COMM" \

> --export-dir /usr/hadoop/emp_colum -m 1

?

?

10、導(dǎo)出表示指定分隔符

命令:

hdfs dfs -mkdir -p /usr/hadoop/emp_column_split

hdfs dfs -ls /usr/hadoop/

?

命令:

sqoop export \

> --connect jdbc:mysql://192.168.159.170:3306/sqoop \

> --username root \

> --password 123456 \

> --table emp_demo \

> --columns "EMPNO,ENAME,JOB,SAL,COMM" \

> --export-dir /usr/hadoop/emp_column_split \

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

> --lines-terminated-by '\n' -m 1

11、批量導(dǎo)出

命令:

sqoop export \

> -Dsqoop.export.records.pre.statement=10 \

> --connect jdbc:mysql://192.168.159.170:3306/sqoop \

> --username root \

> --password 123456 \

> --table emp_demo \

> --export-dir /usr/hadoop/emp -m 1

12、使用Sqoop導(dǎo)入MySQL數(shù)據(jù)到Hive中

命令:

sqoop create-hive-table \

--connect jdbc:mysql://192.168.159.170:3306/sqoop \

--username root \

--password 123456 \

--table emp \

--hive-table emp_import

13、導(dǎo)入表的指定字段到Hive中

命令:

create table emp_column(empno int,ename string,job string,mgr int,hiredate string,sal double,comm double,deptno int) row format delimited fields terminated by '\t' lines terminated by '\n';

任務(wù)三:將常用的Sqoop腳本定義成作業(yè),方便其他人調(diào)用(因?yàn)榘姹締?wèn)題,此處使用sqoop2)

1、進(jìn)入sqoop-shell,創(chuàng)建MySQL數(shù)據(jù)庫(kù)連接;

2、查看連接信息;

3、創(chuàng)建HDFS文件系統(tǒng)連接;

命令:

>create link -connector hdfs-connector

4、創(chuàng)建數(shù)據(jù)傳輸服務(wù)(從MySQL到hdfs);

命令:

>create job f sqoop -t hdfs

5、啟動(dòng)job任務(wù);

命令:

>start job -n jobsqoop

6、查看job任務(wù)狀態(tài);

命令:

>status job -n jobsqoop

出現(xiàn)的問(wèn)題與解決方案

排錯(cuò)一

錯(cuò)誤:導(dǎo)入指定查詢語(yǔ)句的數(shù)據(jù)失敗

排錯(cuò)思路:

  1. 查看日志分析原因;
  2. 根據(jù)報(bào)錯(cuò)提示分析

原因分析:參數(shù)query和table不能同時(shí)使用

解決方案:

命令:

sqoop import \

--connect jdbc:mysql://192.168.159.170:3306/sqoop \

--username root \

--passw 123456 \

--target-dir emp_column_query \

--delete-target-dir \

--query 'select * from emp where EMPNO>=7900 and $CONIONS' \

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

--lines-terminated-by '\n' -m 1 \

--split-by 'emp'

?

排錯(cuò)二:

錯(cuò)誤:測(cè)試sqoop1版本與mysql是否互通出錯(cuò);

排錯(cuò)思路:

  1. 分析日志及錯(cuò)誤原因;
  2. 分析錯(cuò)誤提示

原因分析:缺少jar包;

解決方案:在sqoop的lib目錄下加入所缺jar包,添加后正常;

知識(shí)拓展

?

sqoop 是 apache 旗下一款“Hadoop 和關(guān)系數(shù)據(jù)庫(kù)服務(wù)器之間傳送數(shù)據(jù)”的工具。

核心的功能有兩個(gè):

導(dǎo)入、遷入

導(dǎo)出、遷出

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

導(dǎo)出數(shù)據(jù):從 Hadoop 的文件系統(tǒng)中導(dǎo)出數(shù)據(jù)到關(guān)系數(shù)據(jù)庫(kù) mysql 等 Sqoop 的本質(zhì)還是一個(gè)命令行工具,和 HDFS,Hive 相比,并沒(méi)有什么高深的理論。

sqoop:工具:本質(zhì)就是遷移數(shù)據(jù), 遷移的方式:就是把sqoop的遷移命令轉(zhuǎn)換成MR程序

hive工具,本質(zhì)就是執(zhí)行計(jì)算,依賴于HDFS存儲(chǔ)數(shù)據(jù),把SQL轉(zhuǎn)換成MR程序

?

2. 工作機(jī)制

??? 將導(dǎo)入或?qū)С雒罘g成 MapReduce 程序來(lái)實(shí)現(xiàn) 在翻譯出的 MapReduce 中主要是對(duì) InputFormat 和 OutputFormat 進(jìn)行定制

總結(jié)

以上是生活随笔為你收集整理的Sqoop的基础应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。