当前位置: 首页 > news >正文

榆林 网站建设湖南小程序管理平台

榆林 网站建设,湖南小程序管理平台,会计信息网站建设的意思,网站功能模块什么意思MapReduce 读写数据库 经常听到小伙伴吐槽 MapReduce 计算的结果无法直接写入数据库#xff0c; 实际上 MapReduce 是有操作数据库实现的 本案例代码将实现 MapReduce 数据库读写操作和将数据表中数据复制到另外一张数据表中 准备数据表 create database htu; use htu; creat…MapReduce 读写数据库 经常听到小伙伴吐槽 MapReduce 计算的结果无法直接写入数据库 实际上 MapReduce 是有操作数据库实现的 本案例代码将实现 MapReduce 数据库读写操作和将数据表中数据复制到另外一张数据表中 准备数据表 create database htu; use htu; create table word(name varchar(255) comment 单词,count int comment 数量 ); create table new_word(name varchar(255) comment 单词,count int comment 数量 );数据库持久化类 package com.lihaozhe.db;import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.apache.hadoop.mapreduce.lib.db.DBWritable;import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;/*** author 李昊哲* version 1.0.0* create 2023/11/7*/ Getter Setter NoArgsConstructor AllArgsConstructor public class Word implements DBWritable {/*** 单词*/private String name;/*** 单词数量*/private int count;Overridepublic String toString() {return this.name \t this.count;}Overridepublic void write(PreparedStatement pst) throws SQLException {pst.setString(1, this.name);pst.setInt(2, this.count);}Overridepublic void readFields(ResultSet rs) throws SQLException {this.name rs.getString(1);this.count rs.getInt(2);} } MapReduce 将数据写入数据库 package com.lihaozhe.db;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.db.DBConfiguration; import org.apache.hadoop.mapreduce.lib.db.DBOutputFormat; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import java.io.IOException;/*** author 李昊哲* version 1.0* create 2023-11-7*/ public class Write {public static class WordMapper extends MapperLongWritable, Text, Word, NullWritable {Overrideprotected void map(LongWritable key, Text value, MapperLongWritable, Text, Word, NullWritable.Context context) throws IOException, InterruptedException {String[] split value.toString().split(\t);Word word new Word();word.setName(split[0]);word.setCount(Integer.parseInt(split[1]));context.write(word, NullWritable.get());}}public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {// 设置环境变量 hadoop 用户名 为 rootSystem.setProperty(HADOOP_USER_NAME, root);// 参数配置对象Configuration conf new Configuration();// 配置JDBC 参数DBConfiguration.configureDB(conf,com.mysql.cj.jdbc.Driver,jdbc:mysql://spark03:3306/htu?useUnicodetruecreateDatabaseIfNotExisttruecharacterEncodingUTF8useSSLfalseserverTimeZoneAsia/Shanghai,root, Lihaozhe!!1122);// 跨平台提交conf.set(mapreduce.app-submission.cross-platform, true);// 本地运行// conf.set(mapreduce.framework.name, local);// 设置默认文件系统为 本地文件系统// conf.set(fs.defaultFS, file:///);// 声明Job对象 就是一个应用Job job Job.getInstance(conf, write db);// 指定当前Job的驱动类// 本地提交 注释该行job.setJarByClass(Write.class);// 本地提交启用该行// job.setJar(D:\\work\\河南师范大学\\2023\\bigdata2023\\Hadoop\\code\\hadoop\\target\\hadoop.jar);// 指定当前Job的 Mapperjob.setMapperClass(WordMapper.class);// 指定当前Job的 Combiner 注意一定不能影响最终计算结果 否则 不使用// job.setCombinerClass(WordCountReduce.class);// 指定当前Job的 Reducer// job.setReducerClass(WordCountReduce.class);// 设置 reduce 数量为 零job.setNumReduceTasks(0);// 设置 map 输出 key 的数据类型job.setMapOutputValueClass(WordMapper.class);// 设置 map 输出 value 的数据类型job.setMapOutputValueClass(NullWritable.class);// 设置最终输出 key 的数据类型// job.setOutputKeyClass(Text.class);// 设置最终输出 value 的数据类型// job.setOutputValueClass(NullWritable.class);// 定义 map 输入的路径 注意该路径默认为hdfs路径FileInputFormat.addInputPath(job, new Path(/wordcount/result/part-r-00000));// 定义 reduce 输出数据持久化的路径 注意该路径默认为hdfs路径 // Path dst new Path(/video/ods); // // 保护性代码 如果 reduce 输出目录已经存在则删除 输出目录 // DistributedFileSystem dfs new DistributedFileSystem(); // String nameService conf.get(dfs.nameservices); // String hdfsRPCUrl hdfs:// nameService : 8020; // dfs.initialize(URI.create(hdfsRPCUrl), conf); // if (dfs.exists(dst)) { // dfs.delete(dst, true); // }// FileSystem fs FileSystem.get(conf); // if (fs.exists(dst)) { // fs.delete(dst, true); // } // FileOutputFormat.setOutputPath(job, dst);// 设置输出类job.setOutputFormatClass(DBOutputFormat.class);// 配置将数据写入表DBOutputFormat.setOutput(job, word, name, count);// 提交 job// job.submit();System.exit(job.waitForCompletion(true) ? 0 : 1);} } MapReduce 从数据库读取数据 注意 由于集群环境 导致 MapTask数量不可控可导致最终输出文件可能不止一个 可以在代码使用 conf.set(“mapreduce.job.maps”, “1”) 设置 MapTask 数量 package com.lihaozhe.db;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hdfs.DistributedFileSystem; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.db.DBConfiguration; import org.apache.hadoop.mapreduce.lib.db.DBInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException; import java.net.URI;/*** author 李昊哲* version 1.0* create 2023-11-7*/ public class Read {public static class WordMapper extends MapperLongWritable, Word, Word, NullWritable {Overrideprotected void map(LongWritable key, Word value, MapperLongWritable, Word, Word, NullWritable.Context context) throws IOException, InterruptedException {context.write(value, NullWritable.get());}}public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {// 设置环境变量 hadoop 用户名 为 rootSystem.setProperty(HADOOP_USER_NAME, root);// 参数配置对象Configuration conf new Configuration();// 配置JDBC 参数DBConfiguration.configureDB(conf,com.mysql.cj.jdbc.Driver,jdbc:mysql://spark03:3306/htu?useUnicodetruecreateDatabaseIfNotExisttruecharacterEncodingUTF8useSSLfalseserverTimeZoneAsia/Shanghai,root, Lihaozhe!!1122);// 跨平台提交conf.set(mapreduce.app-submission.cross-platform, true);// 设置 MapTask 数量conf.set(mapreduce.job.maps, 1);// 本地运行// conf.set(mapreduce.framework.name, local);// 设置默认文件系统为 本地文件系统// conf.set(fs.defaultFS, file:///);// 声明Job对象 就是一个应用Job job Job.getInstance(conf, read db);// 指定当前Job的驱动类// 本地提交 注释该行job.setJarByClass(Read.class);// 本地提交启用该行// job.setJar(D:\\work\\河南师范大学\\2023\\bigdata2023\\Hadoop\\code\\hadoop\\target\\hadoop.jar);// 指定当前Job的 Mapperjob.setMapperClass(WordMapper.class);// 指定当前Job的 Combiner 注意一定不能影响最终计算结果 否则 不使用// job.setCombinerClass(WordCountReduce.class);// 指定当前Job的 Reducer// job.setReducerClass(WordCountReduce.class);// 设置 reduce 数量为 零job.setNumReduceTasks(0);// 设置 map 输出 key 的数据类型job.setMapOutputValueClass(Word.class);// 设置 map 输出 value 的数据类型job.setMapOutputValueClass(NullWritable.class);// 设置最终输出 key 的数据类型// job.setOutputKeyClass(Text.class);// 设置最终输出 value 的数据类型// job.setOutputValueClass(NullWritable.class);// 设置输入类job.setInputFormatClass(DBInputFormat.class);// 配置将数据写入表DBInputFormat.setInput(job, Word.class,select name,count from word,select count(*) from word);// 定义 map 输入的路径 注意该路径默认为hdfs路径// FileInputFormat.addInputPath(job, new Path(/wordcount/result/part-r-00000));// 定义 reduce 输出数据持久化的路径 注意该路径默认为hdfs路径Path dst new Path(/wordcount/db);// 保护性代码 如果 reduce 输出目录已经存在则删除 输出目录DistributedFileSystem dfs new DistributedFileSystem();String nameService conf.get(dfs.nameservices);String hdfsRPCUrl hdfs:// nameService : 8020;dfs.initialize(URI.create(hdfsRPCUrl), conf);if (dfs.exists(dst)) {dfs.delete(dst, true);}// FileSystem fs FileSystem.get(conf); // if (fs.exists(dst)) { // fs.delete(dst, true); // }FileOutputFormat.setOutputPath(job, dst);// 提交 job// job.submit();System.exit(job.waitForCompletion(true) ? 0 : 1);} } MapReduce 实现数据库表复制 MapReduce 实现将数据库一张数据表的数据复制到另外一张数据表中 package com.lihaozhe.db;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.NullWritable; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.db.DBConfiguration; import org.apache.hadoop.mapreduce.lib.db.DBInputFormat; import org.apache.hadoop.mapreduce.lib.db.DBOutputFormat;import java.io.IOException;/*** author 李昊哲* version 1.0* create 2023-11-7*/ public class Copy {public static class RWMapper extends MapperLongWritable, Word, Word, NullWritable {Overrideprotected void map(LongWritable key, Word value, MapperLongWritable, Word, Word, NullWritable.Context context) throws IOException, InterruptedException {context.write(value, NullWritable.get());}}public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {System.setProperty(HADOOP_USER_NAME, root);// 参数配置对象Configuration conf new Configuration();// 配置JDBC 参数DBConfiguration.configureDB(conf,com.mysql.cj.jdbc.Driver,jdbc:mysql://spark03:3306/htu?useUnicodetruecreateDatabaseIfNotExisttruecharacterEncodingUTF8useSSLfalseserverTimeZoneAsia/Shanghai,root, Lihaozhe!!1122);// 跨平台提交conf.set(mapreduce.app-submission.cross-platform, true);// 设置 MapTask 数量// conf.set(mapreduce.job.maps, 1);// 声明Job对象 就是一个应用Job job Job.getInstance(conf, read db);job.setJarByClass(Read.class);job.setMapperClass(Read.WordMapper.class);job.setNumReduceTasks(0);job.setMapOutputValueClass(Word.class);job.setMapOutputValueClass(NullWritable.class);// 设置输入类job.setInputFormatClass(DBInputFormat.class);// 配置将数据写入表DBInputFormat.setInput(job, Word.class,select name,count from word,select count(*) from word);// 设置输出类job.setOutputFormatClass(DBOutputFormat.class);// 配置将数据写入表DBOutputFormat.setOutput(job, new_word, name, count);System.exit(job.waitForCompletion(true) ? 0 : 1);} }
http://www.yutouwan.com/news/394372/

相关文章:

  • 晋中住房与城乡建设厅网站北京seo排名优化网站
  • 金融网站排名优化网络组建管理与维护
  • 网站多少图片怎么做超链接高端文化网站模板
  • 网上虚拟银行注册网站湛江网站建设开发
  • 江西网站开发哪家好页面素材图片
  • 深圳极速网站建设报价彩票网站建设多少钱
  • 建设网站专业公司哪家好北京建设工程交易网
  • 动漫网站开发毕业设计机关网站建设工程总结
  • 网站描述怎么修改吗怎么做微信辅助的网站
  • 郑州网站建设中国建设建设银行企业网站需要什么功能
  • 建站软件有哪些功能南通网络科技的公司网站
  • 公司网站要什么做wordpress如何分类栏
  • 南通做企业网站专业建站服务公司
  • 哪家公司做网站比较好九江网站建设推广
  • 网站建设店wordpress站点制作
  • 网站前台模块包括什么网络营销是传销吗
  • 如何创建个人网站设计素材网站线上
  • 网址站点异常怎么解决做h5的网站
  • 查询邮箱注册网站青岛网站制作网站
  • 化妆品网站建设目的wordpress电影页面代码
  • 网站架设教程商标注册网官方查询
  • 网站站群优化焦作网站建设哪家便宜
  • 如何创建一个网站小米R2D安装wordpress
  • 山东省专业群建设网站什么网站做的比较好
  • 高唐做网站建设的公司求个网站谢谢啦
  • 建站公司坡头网站建设公司
  • 一加网站开发怎么在广告联盟接广告
  • 珠海网站搭建导航网站开发工具
  • 四川省建设人才网站2018承德企业网站建设公司
  • 怎么盗取网站计算机应用技术(网站开发)