如何运行这个简单的java程序从hdfs中的directory/words中存储的文本文件中读取字节?我需要为此创建一个jar文件吗?
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.hadoop.*;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class filesystemhdfs
{
public static void main(String args[]) throws MalformedURLException, IOException
{
byte[] b=null;
InputStream in=null;
in=new URL("hdfs://localhost/words/file").openStream();
in.read(b);
System.out.println(""+b);
for(int i=0;i<b.length;i++)
{
System.out.println("b[i]=%d"+b[i]);
System.out.println(""+(char)b[i]);
}
}
}
4条答案
按热度按时间axkjgtzd1#
您可以使用hdfs api,这可以从本地运行:
2fjabf4q2#
首先,您需要告诉jvm url对象中的hdfs方案。通过以下方式完成:
编译java类后,需要使用hadoop命令:
hadoop附带了一个方便的ioutils。这会让你轻松很多。
8ulbf1ek3#
现在回信有点晚,但对将来的读者有帮助。它将迭代hdfs目录并读取每个文件的内容。
只使用hadoop客户端和java。
hk8txs484#
您不能从hdfs读取文件,因为java支持常规文件系统。你需要使用
HDFS java AP
我为这个感到高兴。在这里,我试图从一个远程机器,这就是为什么我使用
UserGroupInformation
并用的run方法编写代码PrivilegedExceptionAction
. 如果您在本地系统中,您可能不需要它。嗯!