使用Sqoop1將MySQL 導入數據到 HDFS

本篇文章主要介紹使用Sqoop1將MySQL 導入數據到 HDFS。

說明:

1、Sqoop 與數據庫進行通信,獲取數據庫表的元數據信息 

2、Sqoop啓動一個Map-Only的MapReduce作業,利用元數據信息並行將數據寫入Hadoop

簡要步驟:

①、mysql中創建數據庫sqoop

②、創建表dept和emp表

③、插入數據

④、從mysql導出數據到HDFS

⑤、查看數據

⑥、導入過程遇到的錯誤以及解決方案

詳細步驟:

一、mysql中創建數據庫sqoop

create database sqoop;
use sqoop;

 

二、創建表dept和emp表

CREATE TABLE DEPT(
    DEPTNO int(2) PRIMARY KEY,
    DNAME VARCHAR(14),
    LOC VARCHAR(13) 
);


CREATE TABLE EMP(
    EMPNO int(4) PRIMARY KEY,
    ENAME VARCHAR(10),
    JOB VARCHAR(9),
    MGR int(4),
    HIREDATE DATE,
    SAL int(7),
    COMM int(7),
    DEPTNO int(2),
    foreign key(deptno) references DEPT(DEPTNO)
); 

 

三、插入數據

use sqoop;



INSERT INTO DEPT VALUES
 (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
 (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
 (40,'OPERATIONS','BOSTON');


INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,'1981-2-22',1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,'1981-4-2',2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,'1981-5-1',2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,'1981-6-9',2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,'87-7-13',3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,'1981-9-8',1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,'87-7-13',1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,'1981-12-3',950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,'1981-12-3',3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,'1982-1-23',1300,NULL,10);

 

四、從mysql導出數據到HDFS

①導入數據使用import命令,輸入如下命令查看幫助說明

sqoop help import

②輸入命令導入數據

其中-m 1 參數代表的含義是使用多少個並行,這個參數的值是1,說明沒有開啓並行功能。

將m參數的數值調爲5或者更大,Sqoop就會開啓5個進程,同時進行數據的導入操作。

注意:mysql數據庫的表中需要有個主鍵,如果沒有主鍵的話需要手動選取一個合適的拆分字段。

-m 1是map的數量

sqoop import --connect jdbc:mysql://localhost:3306/sqoop --username root --password P@assWord123 --table EMP -m 1

 

錯誤解決方案: 

Sqoop 導入數據報錯:No columns to generate for ClassWriter

 

啓動mr歷史記錄命令:

mr-jobhistory-daemon.sh start historyserver

五、查看數據

 

 

六、錯誤以及解決方案

1、Sqoop: java.lang.RuntimeException: Could not load db driver class: com.mysql.jdbc.Driver

2、https://blog.csdn.net/zjh_746140129/article/details/84962235

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章