亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

hadoop中如何實現DBInputFormat

發布時間:2022-01-05 14:56:27 來源:億速云 閱讀:153 作者:小新 欄目:云計算

這篇文章主要介紹了hadoop中如何實現DBInputFormat,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

代碼未做測試,先做記錄

package com.test;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.net.URI;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
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.DBWritable;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
/**
 * 要運行本示例
 * 1、把mysql的jdbc驅動放到taskTracker的lib目錄下,重啟集群
 *
 */
public class WordCountDB extends Configured implements Tool {
 
 private String OUT_PATH = "hdfs://grid131:9000/output";
 
 public static class Map extends Mapper<LongWritable, MyUser, LongWritable, Text> {
  public void map(LongWritable key, MyUser value, Context context) throws IOException, InterruptedException {
   context.write(key, new Text(value.toString()));
  }
 }
 
 public int run(String[] args) throws Exception {
  Configuration conf = this.getConf();
  DBConfiguration.configureDB(conf, "com.mysql.jdbc.Driver", "jdbc:mysql://grid131:3306/test", "root", "admin");
  
  //輸出路徑如果存在,則刪除
  FileSystem fs = FileSystem.get(new URI(OUT_PATH), conf);
  fs.delete(new Path(OUT_PATH), true);
  
  Job job = new Job(conf, WordCountDB.class.getSimpleName());
  job.setJarByClass(WordCountDB.class);
  
  FileOutputFormat.setOutputPath(job, new Path(args[1]));
  
  //指定不需要reduce,直接把map輸出寫入到hdfs中
  job.setNumReduceTasks(0);
  job.setInputFormatClass(DBInputFormat.class);
  
  //指定表、字段
  //DBInputFormat.setInput(job, inputClass, tableName, conditions, orderBy, fieldNames)
  DBInputFormat.setInput(job, MyUser.class, "myuser", null, null, "id", "name");
  job.setMapperClass(Map.class);
  
  //當reduce輸出類型與map輸出類型一致時,map的輸出類型可以不設置
  job.setMapOutputKeyClass(LongWritable.class);
  job.setMapOutputValueClass(Text.class);
  
  job.waitForCompletion(true);
  
  return job.isSuccessful()?0:1;
 }
 
 public static void main(String[] args) throws Exception {
  int exit = ToolRunner.run(new WordCount(), args);
  System.exit(exit);
 }
}
class MyUser implements Writable, DBWritable {
 private Long id;
 private String name;
 
 public Long getId() {
  return id;
 }
 public void setId(Long id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 
 @Override
 public void write(DataOutput out) throws IOException {
  out.writeLong(this.id);
  Text.writeString(out, this.name);
 }
 
 @Override
 public void readFields(DataInput in) throws IOException {
  this.id = in.readLong();
  this.name = Text.readString(in);
 }
 
 @Override
 public void write(PreparedStatement statement) throws SQLException {
  statement.setLong(1, this.id);
  statement.setString(2, this.name);
 }
 
 @Override
 public void readFields(ResultSet resultSet) throws SQLException {
  this.id = resultSet.getLong(1);
  this.name = resultSet.getString(2);
 }
 
 @Override
 public String toString() {
  return this.id + "\t" + this.name;
 }
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“hadoop中如何實現DBInputFormat”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

信宜市| 太湖县| 鹤岗市| 叙永县| 荣成市| 青州市| 二连浩特市| 德清县| 祥云县| 保靖县| 定远县| 建湖县| 留坝县| 舟山市| 历史| 九龙坡区| 城步| 鄂托克前旗| 曲周县| 简阳市| 富锦市| 织金县| 二手房| 白沙| 康平县| 勃利县| 晋城| 皮山县| 柏乡县| 奈曼旗| 定州市| 宁陕县| 南平市| 泽州县| 年辖:市辖区| 玉田县| 大英县| 张家港市| 化德县| 洛阳市| 晋城|