Quantcast
Channel: Tech Tutorials
Viewing all articles
Browse latest Browse all 938

Java Program to Read File in HDFS

$
0
0

In this post we’ll see a Java program to read a file in HDFS. You can read a file in HDFS in two ways-

  1. Create an object of FSDataInputStream and use that object to read data from file.
  2. You can use IOUtils class provided by Hadoop framework.

Using FSDataInputStream


import java.io.IOException;
import java.io.OutputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HDFSFileRead {

public static void main(String[] args) {
Configuration conf = new Configuration();
FSDataInputStream in = null;
OutputStream out = null;
try {
FileSystem fs = FileSystem.get(conf);
// Input file path
Path inFile = new Path(args[0]);

// Check if file exists at the given location
if (!fs.exists(inFile)) {
System.out.println("Input file not found");
throw new IOException("Input file not found");
}
// open and read from file
in = fs.open(inFile);
//displaying file content on terminal
out = System.out;
byte buffer[] = new byte[256];

int bytesRead = 0;
while ((bytesRead = in.read(buffer)) > 0) {
out.write(buffer, 0, bytesRead);
}


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
// Closing streams
try {
if(in != null) {
in.close();
}
if(out != null) {
out.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

In order to execute this program you need to add the class path to the Hadoop’s classpath.


export HADOOP_CLASSPATH=<PATH TO .class FILE>

To run program - hadoop org.netjs.HDFSFileRead /user/process/display.txt

Using IOUtils class


import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class HDFSFileRead {

public static void main(String[] args) {
Configuration conf = new Configuration();
FSDataInputStream in = null;
//OutputStream out = null;
try {
FileSystem fs = FileSystem.get(conf);
// Input file path
Path inFile = new Path(args[0]);

// Check if file exists at the given location
if (!fs.exists(inFile)) {
System.out.println("Input file not found");
throw new IOException("Input file not found");
}
in = fs.open(inFile);

IOUtils.copyBytes(in, System.out, 512, false);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
IOUtils.closeStream(in);
}
}
}

That's all for this topic Java Program to Read File in HDFS. If you have any doubt or any suggestions to make please drop a comment. Thanks!


Related Topics

  1. Java Program to Write File in HDFS
  2. File Read in HDFS - Hadoop Framework Internal Steps
  3. HDFS Commands Reference List
  4. What is SafeMode in Hadoop
  5. HDFS Federation in Hadoop Framework

You may also like -


Viewing all articles
Browse latest Browse all 938

Trending Articles