Red de conocimiento informático - Conocimiento informático - Cómo acceder a datos HDFS a través de la red

Cómo acceder a datos HDFS a través de la red

Hola, código de definición de clase de entidad:

lt; pre name="code" class="java"gt; paquete com.qin.operadb; importar java.io.DataInput

importar java.io.DataOutput;

importar java.io.IOException

importar java.sql.PreparedStatement; /p>

importar java.sql.ResultSet

importar java.sql.SQLException

importar org.apache.hadoop.io.Text

importar org.apache.hadoop.io.Writable;

importar org.apache.hadoop.mapreduce.lib.db.DBWritable

/***

* Encapsular información de entidad de base de datos

* registros

*

* Buscar en el grupo de intercambio de tecnología de big data: 376932160

*

* **/

la clase pública PersonRecoder implementa Writable, DBWritable {

public int id //corresponde al campo de identificación en la base de datos

public String name; //corresponde al campo de nombre en la base de datos

public int age; //corresponde al campo de edad en la base de datos

@Override

public void readFields(resultado de ResultSet) lanza SQLException {

this.id=result.getInt(1);

this.name=result.getString(2);

this.age=result.getInt(3);

}

@Override

escritura pública vacía (Stmt de declaración preparada) lanza SQLException {

stmt.setInt(1, id;

stmt.setString(2, nombre

stmt.setInt(3, edad) ;

}

@Override

public void readFields(DataInput arg0) lanza IOException {

// TODO Código auxiliar de método generado automáticamente

this.id=arg0.readInt();

this.name=Text.readString(arg0);

this.age=arg0.readInt(

}

@Anular

pu);

blic void write(Salida de datos) lanza IOException {

// TODO Código auxiliar de método generado automáticamente

out.writeInt(id);

Text.writeString( out, this.name);

out.writeInt(this.age);

}

@Override

public String toString; () {

// TODO Código auxiliar de método generado automáticamente

return "id: " id " Edad: " age " Nombre: " nombre;

}

lt;/pregt;

El código de definición de la clase MR, tenga en cuenta que es un trabajo de solo mapa:

lt; pre nombre="código" clase="java"gt; paquete com.qin.operadb

importar java.io.IOException

importar org.apache.hadoop; .conf.Configuration ;

importar org.apache.hadoop.fs.FileSystem

importar org.apache.hadoop.fs.Path

importar org. .apache.hadoop .io.LongWritable;

importar org.apache.hadoop.io.Text

importar org.apache.hadoop.mapred.JobConf; p>importar org.apache.hadoop.mapred.lib.IdentityReducer

importar org.apache.hadoop.mapreduce.Job

importar org.apache.hadoop.mapreduce.Mapper;

importar org.apache.hadoop.mapreduce.lib.db.DBConfiguration;

importar org.apache.hadoop.mapreduce.lib.db.DBInputFormat; p>import org .apache.hadoop.mapreduce.lib.output.FileOutputFormat;

clase pública ReadMapDB {

/**

* Número de registros de datos leído por trabajo de mapa

*

* **/

La clase estática privada DBMap extiende Mapperlt; LongWritable, PersonRecoder, LongWritable, Textgt;

@Override

mapa vacío protegido (LongWritable k

ey, valor de PersonRecoder, contexto de contexto)

lanza IOException, InterruptedException {

context.write(new LongWritable(value.id), new Text(value.toString()));

}

}

public static void main(String[] args)throws Exception {

JobConf conf=new JobConf(ReadMapDB .class);

//Configuración conf=new Configuración();

// conf.set("mapred.job.tracker", "192.168.75.130:9001") ;

//Lee el campo de datos en persona

// conf.setJar("tt.jar");

//Presta atención a esta línea. de código Colóquelo al frente para la inicialización; de lo contrario, informará

DBConfiguration.configureDB(conf, "com.mysql.jdbc.Driver", "jdbc:mysql://192.168.211.36:3306/ test", "root", "qin");

/**Información del campo a leer**/

Stringfields[]=new String[]{"id" ," nombre", "edad"};

/**Tarea de trabajo**/

Trabajo trabajo=nuevo trabajo(conf, "readDB"); p> System.out.println("Mode: " conf.get("mapred.job.tracker"));

/**Establezca cierta información para el formato de entrada de la base de datos**/

DBInputFormat.setInput(trabajo, PersonRecoder.class, "persona", nulo, "id", campos

/***Establecer formato de entrada*/

trabajo); .setInputFormatClass (DBInputFormat.class);

trabajo.setOutputKeyClass(LongWritable.class);

trabajo.setOutputValueClass(Text.class); (DBMap .class);

String path="hdfs://192.168.75.130:9000/root/outputdb"

FileSystem fs=FileSystem.get(conf); /p >

Ruta p=nueva ruta(ruta);

if(fs.exists(p)){

fs.delete(p, true); p>

System.out.println("¡La ruta de salida existe y ha sido eliminada! ");

}

>FileOutputFormat.setOutputPath(trabajo, p);

System.exit(job.waitForCompletion(true) ? 0: 1

}

}<); /p>