Te doy la bienvenida a nuestro sitio web, aquí hallarás la solucíon de lo que andabas buscando.
Solución:
Entonces, la respuesta más simple es solo un trabajo de “identidad” que tiene una salida SequenceFile.
Se ve así en java:
public static void main(String[] args) throws IOException,
InterruptedException, ClassNotFoundException
Configuration conf = new Configuration();
Job job = new Job(conf);
job.setJobName("Convert Text");
job.setJarByClass(Mapper.class);
job.setMapperClass(Mapper.class);
job.setReducerClass(Reducer.class);
// increase if you need sorting or a special number of files
job.setNumReduceTasks(0);
job.setOutputKeyClass(LongWritable.class);
job.setOutputValueClass(Text.class);
job.setOutputFormatClass(SequenceFileOutputFormat.class);
job.setInputFormatClass(TextInputFormat.class);
TextInputFormat.addInputPath(job, new Path("/lol"));
SequenceFileOutputFormat.setOutputPath(job, new Path("/lolz"));
// submit and wait for completion
job.waitForCompletion(true);
import java.io.IOException;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
//White, Tom (2012-05-10). Hadoop: The Definitive Guide (Kindle Locations 5375-5384). OReilly Media - A. Kindle Edition.
public class SequenceFileWriteDemo
private static final String[] DATA = "One, two, buckle my shoe", "Three, four, shut the door", "Five, six, pick up sticks", "Seven, eight, lay them straight", "Nine, ten, a big fat hen" ;
public static void main( String[] args) throws IOException
String uri = args[ 0];
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create( uri), conf);
Path path = new Path( uri);
IntWritable key = new IntWritable();
Text value = new Text();
SequenceFile.Writer writer = null;
try
writer = SequenceFile.createWriter( fs, conf, path, key.getClass(), value.getClass());
for (int i = 0; i < 100; i ++)
key.set( 100 - i);
value.set( DATA[ i % DATA.length]);
System.out.printf("[% s]t% st% sn", writer.getLength(), key, value);
writer.append( key, value);
finally
IOUtils.closeStream( writer);
Depende de cuál sea el formato del archivo TXT. ¿Es una línea por registro? Si es así, simplemente puede usar TextInputFormat que crea un registro para cada línea. En su mapeador puede analizar esa línea y usarla de la forma que elija.
Si no es una línea por registro, es posible que deba escribir su propia implementación de InputFormat. Echa un vistazo a este tutorial para obtener más información.
Comentarios y puntuaciones
Al final de la web puedes encontrar las referencias de otros programadores, tú aún puedes dejar el tuyo si lo deseas.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)