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上的目录看是否有数据生成

 

 

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