使用Sqoop1將MySQL 匯入資料到 HDFS
阿新 • • 發佈:2019-01-12
本篇文章主要介紹使用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 [email protected] --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