MR 从 mysql中 读取 和 写入 数据

2023-11-10

1.编写DBWritable类

import org.apache.hadoop.io.Writable;
import org.apache.hadoop.mapred.lib.db.DBWritable;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class MYDBWritable implements DBWritable, Writable {
private int id=0;
private String txt="";
private String name="";


private String word="";
private int wordcount=0;

public String getWord() {
    return word;
}

public void setWord(String word) {
    this.word = word;
}

public int getWordcount() {
    return wordcount;
}

public void setWordcount(int wordcount) {
    this.wordcount = wordcount;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getTxt() {
    return txt;
}

public void setTxt(String txt) {
    this.txt = txt;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public void write(DataOutput dataOutput) throws IOException {
      dataOutput.writeInt(id);
      dataOutput.writeUTF(txt);
      dataOutput.writeUTF(name);

    dataOutput.writeInt(wordcount);
    dataOutput.writeUTF(word);
}

public void readFields(DataInput dataInput) throws IOException {
      id=dataInput.readInt();
      txt=dataInput.readUTF();
      name=dataInput.readUTF();

      word=dataInput.readUTF();
      wordcount=dataInput.readInt();
}

       //id txt name 是从需要从第一个数据库中读取的数据所以只需要读操作 而word 和wordcount是处理后的数据 只需要写入

public void write(PreparedStatement preparedStatement) throws SQLException {
          // preparedStatement.setInt(1,id);
          //  preparedStatement.setString(2,txt);
          //  preparedStatement.setString(3,name);

            preparedStatement.setInt(2,wordcount);
            preparedStatement.setString(1,word);
}

public void readFields(ResultSet resultSet) throws SQLException {
      id=resultSet.getInt(1);
      txt=resultSet.getString(2);
      name=resultSet.getString(3);

        //wordcount=resultSet.getInt(1);
        //word=resultSet.getString(2);

}
}

map的输入kv为 LongWritable, MYDBWritable

public class mysqlmap extends Mapper<LongWritable, MYDBWritable,Text, IntWritable> {

protected void map(LongWritable key, MYDBWritable value, Context context) throws IOException, InterruptedException {


     String line = value.getTxt();
     String arr[]=line.split(" ");
     for(String s : arr) {
         context.write(new Text(s), new IntWritable(1));
     }
}

}

reduce需要负责往数据库写入数据 k必须为DBWritable的之类 而 v不起作用数据主要由MYDBWritable携带进行写入所以v为NULLWritable;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

public class mysqlreduce extends Reducer<Text, IntWritable, MYDBWritable, NullWritable> {

protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

    int count=0;
     for(IntWritable w : values){
         count = count + w.get();
     }
    MYDBWritable keyout= new MYDBWritable();
     keyout.setWord(key.toString());
     keyout.setWordcount(count);
     context.write(keyout,NullWritable.get());
}

}

在job中设置

  job.setInputFormatClass(DBInputFormat.class);
  
    String driverclass= "com.mysql.cj.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/big4?serverTimezone=UTC";
    String name = "root";
    String password = "liu10010";
    //配置连接
    DBConfiguration.configureDB(job.getConfiguration(),driverclass,url,name,password);
    //设置输入方法
    DBInputFormat.setInput(job,MYDBWritable.class,"select id,txt,name from words","select count(*) from words");
    //设置输出方法
    DBOutputFormat.setOutput(job,"stats","word","c");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MR 从 mysql中 读取 和 写入 数据 的相关文章

  • 在C#中怎么设置一个全局变量,方便我在其他的窗口中可以调用

    大家按照下面的步骤就可以啦 1 首先我们进入program cs 2 在Program类后面添加一个类 注意要是静态类 如下 public static class user11 public static string yhm 3 进入其
  • 《人工智能(智能系统指南,第二版)》读书笔记——3、第二章

    1 introduction to knowledge based intelligent systems summary questions for review references 2 rule based expert system
  • STM32 一灯大师——寄存器点亮流水灯

    目录 1 配置端口输出数据寄存器 ODR 2 配置低寄存器 CRL 3 配置复位和时钟控制寄存器 RCC 4 拓展 如何让PC2和PC3两个LED灯同时闪烁 5 总结 GPIO功能框图和常用的寄存器 1 CRL和CRH寄存器 2 IDR和O
  • HP380 G9服务器RAID划分

    第一步 配置iLO口IP地址 由于HP服务器刚买回来的时 管理口的状态是自动获取IP地址 管理口没有IP地址 该如何去配置管理口IP地址 可以通过两种方式修改 首先登录到iLO口上 如何配置iLO口地址 两种方法 1 进入BIOS进行IP地
  • [Python图像处理] 十二.图像几何变换之图像仿射变换、图像透视变换和图像校正

    该系列文章是讲解Python OpenCV图像处理知识 前期主要讲解图像入门 OpenCV基础用法 中期讲解图像处理的各种算法 包括图像锐化算子 图像增强技术 图像分割等 后期结合深度学习研究图像识别 图像分类应用 希望文章对您有所帮助 如
  • Java基础之运算符

    运算符介绍 运算符是一种特殊的符号 用以表示数据的运算 赋值和比较等 1 算术运算符 2 赋值运算符 3 关系运算符 4 逻辑运算符 5 三元运算符 算术运算符 算术运算符是对数值类型的变量进行运算的 在Java程序中使用的非常多 运算符
  • 原生Android项目集成Flutter Module踩坑记录

    按照官网的手动集成步骤一步一步完成 但是在运行打开 FlutterActivity 时出现了了如下错误 E flutter ERROR flutter runtime dart vm data cc 18 VM snapshot inval
  • Maven 编译提示:spring-boot-maven-plugin:2.1.9.RELEASE or one of its dependencies could not be resolved

    问题描述 今天使用mava plugin 插件遍历Maven项目提示如下错误信息 ERROR Plugin org springframework boot spring boot maven plugin 2 1 9 RELEASE or
  • Unity3D使用鼠标旋转缩放平移视角

    这篇文章主要为大家详细介绍了Unity3D使用鼠标旋转缩放平移视角 文中示例代码介绍的非常详细 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 Unity使用鼠标旋转缩放平移视角 供大家参考 具体内容如下 用代码在Game界面完美实现Sc
  • 【创作赢红包】Python第3章 流程控制

    这里写目录标题 本章导读 真值测试 比较运算 成员运算 for循环 while循环 项目实训1 项目实训2 项目实训3 项目实训4 项目实训5 项目实训6 项目实训7 项目实训8 项目实训9 项目实训10 项目实训11 项目实训12 项目实
  • ​在可视化大屏中轻松完成机器学习建模和调参应用实例

    Streamlit 是一个开源 Python 库 可帮助开发人员为其系统创建交互式图形用户界面 它专为机器学习和数据科学家团队设计 使用 Streamlit 我们可以快速创建交互式 Web 应用程序并进行部署 前端工作对数据科学家来说并不重
  • 互联网生活中的隐私保护:用隐私换便利还是花钱护隐私?

    近日 某高校毕业生在校期间窃取学校内网数据 收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注 在大数据时代 算法分发带来了隐私侵犯 在享受消费生活等便捷权利的同时 似乎又有不少个人信息泄露的担忧 用隐私换便利
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • Python 函数的说明文档

    视频版教程 Python3零基础7天入门实战视频教程 用 备注说明 然后我们调用函数的地方 鼠标移动上去就能看到函数的说明 提供代码的可读性 def add x y 两数相加函数 param x 两数相加数x param y 两数相加数y
  • matlab中Img(:,:,n)函数的说明

    Img n 中 n可以取1 2 3分别代表img图像的第1 2 3通道 即对应着R G B三种颜色 也就是说 Img 1 是红色分量图像 Img 2 是绿色分量图像 Img 3 是蓝色分量图像 具体也可通过如下一段函数定义可以看出 img
  • zabbix使用手册

    1 添加主机组 将多个主机合并在一个逻辑组件内即为主机组 分组的目的是将同一属性的主机归类 方 便以后管理 例如以业务指标划分组 以系统版本划分组 以应用程序划分组等 主机组中可以包含主机 也可以包含模板 进入zabbix管理界面 单击 配
  • 手把手教你运行yolov6 (小白版教程)

    一 yolov6的介绍 二 yolov6的吐槽 三 yolov6运行详解 前言 自己运行yolov6的完整教程 一 yolov6的介绍 我在此应用美团视觉部官方的说法叙述一下yolov6 YOLOv6 是美团视觉智能部研发的一款目标检测框架
  • 【Linux】VMware安装unbuntu18.04虚拟机-超详细步骤(附镜像文件)

    这次为大家带来的是在VMware创建的虚拟机上安装ubuntu18 04桌面版系统 ubuntu18 04也是目前比较流行的一个linux系统版本 接下来就一起来实操吧 文章目录 一 环境准备 二 创建虚拟机 三 安装虚拟机 一 环境准备
  • 包、模块、函数

    包 模块 函数 一 while循环与使用场景 1 while循环 counter 1 while counter lt 10 counter 1 print counter else print EOF 运行结果 2 3 4 5 6 7 8
  • 邮件发送原理和实现

    邮件发送 拓展 MIME 多用途互联网邮件扩展类型 就是附件 1 准备工作 获取QQ邮箱权限 测试代码 package com jyw import com sun mail util MailSSLSocketFactory import

随机推荐

  • wifi名称可以有空格吗_是真的吗?WiFi名称后面带“5G”,网速会更快?

    要想体验快到飞起的千兆网速 感受全屋覆盖的满分信号 移动全千兆 你值得拥有 千兆5G 无论是旅途中紧急处理工作 文件 图片秒传秒下 还是在外时与家人视频问候 无卡顿低延迟 用千兆5G 网速始终快人一步 千兆宽带 品质生活从品质宽带开始 用千
  • AcWing--756. 蛇形矩阵

    输入两个整数 n 和 m 输出一个 n 行 m 列的矩阵 将数字 1 到 n m 按照回字蛇形填充至矩阵中 具体矩阵形式可参考样例 输入格式 输入共一行 包含两个整数 n 和 m 输出格式 输出满足要求的矩阵 矩阵占 n 行 每行包含 m
  • Linux——使用第三方库链接的方式——动态式

    回顾上文 122条消息 Linux使用第三方库链接的使用方式 静态式 橙予清的zzz 的博客 CSDN博客https blog csdn net weixin 69283129 article details 131414804 spm 1
  • 【qiankun】微前端在项目中的具体使用

    1 安装qiankun npm install qiankun save 2 主应用中注册和配置qiankun 在主应用的入口文件main ts中 引入qiankun的注册方法 import registerMicroApps start
  • java/php/net/python健身房管理系统设计

    本系统带文档lw万字以上 答辩PPT 查重 如果这个题目不合适 可以去我上传的资源里面找题目 找不到的话 评论留下题目 或者站内私信我 有时间看到机会给您发 系统设计 4 1 系统体系结构 健身房管理系统的结构图4 1所示
  • mysql localhost值_jdbc:mysql://localhost:3306/mysql这句话中localhost具体指什么的localhost?能修改么?在哪里配置的?...

    展开全部 jdbc mysql 是指JDBC连接方式 localhost 是指你的本机地址 3306 SQL数据库的端口 jdbc 就是你要连接的32313133353236313431303231363533e59b9ee7ad94313
  • Mysql 8.0修改密码

    1 mysql u root p 原来的密码 进入数据库中 2 show databases 3 use mysql 4 使用下面的语句修改密码 ALTER USER root localhost IDENTIFIED WITH mysql
  • 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    驱动程序无法通过使用安全套接字层 SSL 加密与 SQL Server 建立安全连接 错误 The server selected protocol version TLS10 is not accepted by client prefe
  • STM32初始化结构体变量时成员排序的问题

    平台 STM32F103RCT6 MDK 笔者在调试时发现 结构体不同类型成员的定义顺序对于程序运行过程中的取值可能会产生很大的BUG 开始时定义 输入参数结构体 typedef struct u8 TempRange 温度最大值 floa
  • 日期格式‘YYYY-MM-DD’中的BUG

    1 日期格式 先来看一下日期格式主要有下面三种 US style Euro style RFC 3389 Layout Format string Example US style Dec 29 2019 MM DD YYYY 12 29
  • yolo格式数据转换为coco格式

    只需要有图片和yolo格式的标签就可以转换为coco格式的标签 第一步 将yolo格式的标签 classId xCenter yCenter w h转换为coco格式 classId xMin yMim xMax yMax格式 coco的i
  • 【产品设计】电商后台系统设计--订单管理

    电商后台产品 涉及众多模块 而以商品 订单 库存 为核心模块 模块之间存在大量交互 订单较为重要 它记录了所有的交易数据 对电商公司来讲 最核心最难做的有三部分 商品 订单 库存 商品与店铺 营销 评价等相关 订单与会员 营销 支付 库存
  • C# WPF MVVM设计模式下ComboBox的数据源更新的一个问题

    C WPF MVVM设计模式下ComboBox的数据源问题 问题的出现 解决 问题的出现 我在设计一个基于C MVVM 的WPF应用 当我对MainWindow的一个ComboBox进行数据绑定时候 发现当数据源更新后 前台的ComboBo
  • BSN武汉链对接说明

    项目说明 我们项目需要把ETH合约功能迁移到国内链上来 然后基于开发成本等多方面考虑 最终选择了BSN 武汉链接入 相关的BSN文档 BSN 文档地址 对接说明 1 创建BSN帐号 注册并登录bsn官网 网址 BSN官网 点击开放联盟链 g
  • 【Qt】控件探幽——QLineEdit

    注1 本系列文章使用的Qt版本为Qt 6 3 1 注2 本系列文章常规情况下不会直接贴出源码供复制 都以图片形式展示 所有代码 自己动手写一写 记忆更深刻 本文目录 QLineEdit探幽 1 设置数据 获取数据 2 只读 readOnly
  • 2023年华为od机试Java【人气最高的店铺】

    题目 某城市有m个商店和n位市民 现在要举行一场活动 通过投票来选出最受欢迎的商店 每位市民只能投一票 他们将根据自己的喜好为指定的商店投票 然而 1号商店有一个特殊的优势 它可以给每位市民发放补贴 使他们改变投票意向 投票给1号商店 请你
  • 超级计算机是几近制,进制

    进制也就是进位计数制 是人为定义的带进位的计数方法 有不带进位的计数方法 比如原始的结绳计数法 唱票时常用的 正 字计数法 以及类似的tally mark计数 对于任何一种进制 X进制 就表示每一位置上的数运算时都是逢X进一位 十进制是逢十
  • 第 5 章 HBase 优化

    5 1 RowKey 设计 一条数据的唯一标识就是 rowkey 那么这条数据存储于哪个分区 取决于 rowkey 处于 哪个一个预分区的区间内 设计 rowkey的主要目的 就是让数据均匀的分布于所有的 region 中 在一定程度上防止
  • git原理探索实验1——git的三种对象

    背景知识 git的三个区域 working directory 也就是你当前所能操作的那些目录和文件 history 你所提交的所有记录 文件历史内容等等 git是个分布式版本管理系统 在你本地有项目的所有历史提交记录 文件历史记录 提交日
  • MR 从 mysql中 读取 和 写入 数据

    1 编写DBWritable类 import org apache hadoop io Writable import org apache hadoop mapred lib db DBWritable import java io Da