1.sqoop全量導入數據到hdfs

1.導出數據庫表全量數據到HDFS

  • 在MySQL數據庫服務器中創建一個數據庫userdb, 然後在創建一張表 emp,添加點測試數據到表中

  • 從MySQL數據庫服務器中的userdb數據庫下的emp表導入HDFS上

CREATE DATABASE /*!32312 IF NOT EXISTS*/`userdb` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `userdb`;

/*Table structure for table `emp` */

DROP TABLE IF EXISTS `emp`;

CREATE TABLE `emp` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `deg` varchar(20) DEFAULT NULL,
  `salary` double DEFAULT NULL,
  `dept` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `emp` */

insert  into `emp`(`id`,`name`,`deg`,`salary`,`dept`) values 

(1,'laozhang','manager',70000,'TP'),

(2,'laowang','develop leader',80000,'TP'),

(3,'laoli','ios dev',35000,'AC'),

(4,'laosi','Android dev',23000,'AC'),

(5,'laotie','admin',12000,'TP'),

(6,'laozi','bigdata',90000,'TP');
sqoop import --connect jdbc:mysql://node2:3306/userdb --username root   --password 123456 --table emp --m 1

沒有指定hdfs目錄,自動導入到當前用戶目錄,並且字段之間默認的分隔符是 ,逗號

提交之後,會運行一個MR程序,最後查看HDFS上的目錄看是否有數據生成

2.導入數據庫表數據到HDFS指定目錄

  • 使用參數 --target-dir來指定導出目的地,

  • 使用參數--delete-target-dir來判斷導出目錄是否存在,如果存在就刪掉

sqoop import  --connect jdbc:mysql://node2:3306/userdb --username root \
 --password 123456  --table emp  --target-dir /sqoopExportData/emp \
 --delete-target-dir --m 1

提交查看HDFS上的目錄看是否有數據生成  

3.導入數據庫表數據到HDFS指定目錄並且指定數據字段的分隔符

使用參數 --fields-terminated-by 分隔符

sqoop import  --connect jdbc:mysql://node2:3306/userdb --username root --password 123456  --table emp  --target-dir /sqoop/emp1 --delete-target-dir --fields-terminated-by '#' --m 1

提交命令查看HDFS上的目錄看是否有數據生成

 

 

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