------------- 创建数据库和表 ---------------
mysql -u root -p
登录数据库create database if not exists
ii;
创建数据库use
ii;
使用数据库
create table if not exists `ii` (
`id` int primary key auto_increment,
`word` varchar(100) not null,
`file_name_count` varchar(1000) not null
);
-------------- 把 MapReduce 的输出保存到数据库 ----------
-
上传 mysql 的驱动到 hdfs
-
创建 ii 表的 model 类
也是一个内部类,
添加属性和表字段一一对应,增加 setter 和 getter 方法 -
让 model 类实现 Writable 和 DBWritable 两个接口
实现接口中的四个方法 -
在 main 中配置数据库链接信息
String driverClass = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://master:3306/book";
String username = "root";
String password = "123456aA_";
DBConfiguration.configureDB(job.getConfiguration(), driverClass, url, username, password);
- 加载数据库驱动
Path dbDriverPath = new Path("hdfs://master:9000/mysql-connector-java-5.1.46.jar");
job.addArchiveToClassPath(dbDriverPath);
- 配置输出结果保存到数据库
job.setOutputFormatClass(DBOutputFormat.class);
- 配置数据库表相关信息
DBOutputFormat.setOutput(job, "ii", "word", "file_name_count");
-
修改 reduce 的输出类型:
key = model 类型
vlaue = nullwritable 类型修改逻辑,修改 job 中配置的 reduce 输出类型
------------- 如果不能在 windows 模拟执行,就打包放到 hadoop 执行 --------
hadoop jar xxxx 命令执行 mapReduce 程序