当前位置: 首页 > 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://wiki.neutronadmin.com/news/394372/

相关文章:

  • 网站编辑软件有哪些wordpress如何编辑页面
  • 网站开发综合实训wordpress 访问者
  • 专业做辅助的网站跨境电商手机app平台
  • 湛江网站设计公司地址网页制作基础教程背景图片
  • 凡客建网站网站域名解析错误怎么办
  • 有什么电商网站做推广赚佣金的四川建设网共享平台
  • 网站开发工资多少稳定么网站建设企
  • 餐饮vi设计案例欣赏网站及搜索引擎优化建议
  • 购物网站app深圳公司排名前100名
  • 外国平面设计网站有哪些电商网站购买的流程图
  • 重庆网站建设 cqhtwl高端品牌全屋定制
  • 重新安wordpress网站企业免费网站
  • 关键词搜索网站商城网站哪个公司做的好处
  • 怎么做自己网站里的资讯wordpress邮箱订阅
  • 深圳创意网站产品推广介绍
  • 宿迁建设局网站青岛知道网络科技有限公司
  • 最好的扁平化网站外国网站上做Task
  • 站酷做网站学seo优化
  • 怀化网站优化购物车网站设计
  • 做网站页面用什么营销型网站页面布局
  • 利为汇网站建设上海服务政策调整
  • 福州商城网站建设wordpress spotless
  • 深圳市浩天建设网站上海网站开发开发好的公司电话
  • php搭建网站软件下载建设银行粤通卡网站
  • 网站 制作 中心青海省建设厅备案网站
  • 医院网站建设怎么设置宿州北京网站建设
  • 公司加强网站建设男生可以做网站编辑工作吗
  • 建设银行 北京招聘网站承德项目网
  • 终端平台网站建设网站制作产品优化
  • 高端品牌网站制作网站关键词优化排名推荐