我正在尝试构建一个hadoop程序,其目的是 cat
我之前上传到hdfs的文件主要基于本教程,程序如下所示:
import java.io.*;
import java.net.URI;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
public class ReadHDFS {
public static void main(String[] args) throws IOException {
String uri = args[0];
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
FSDataInputStream in = null ;
try
{
in = fs.open(new Path(uri));
IOUtils.copyBytes(in, System.out, 4096, false);
}
finally
{
IOUtils.closeStream(in);
}
}
}
在我看来,这个教程是有缺陷的,因为根据我的理解,ioutils是 apache.commons
图书馆。但是,尽管我在我一直尝试部署的程序中添加了以下行:
import org.apache.commons.compress.utils.IOUtils;
我仍然遇到以下错误:
即:
FileSystemCat.java:37: error: cannot find symbol
IOUtils.copyBytes(in, System.out, 4096, false);
^
symbol: method copyBytes(InputStream,PrintStream,int,boolean)
location: class IOUtils
FileSystemCat.java:40: error: cannot find symbol
IOUtils.closeStream(in);
^
symbol: variable in
location: class FileSystemCat
2 errors
我在namenode上执行这个命令:
javac -cp /usr/local/hadoop/share/hadoop/common/hadoop-common-2.8.1.jar:/home/ubuntu/job_program/commons-io-2.5/commons-io-2.5.jar FileSystemCat.java
1条答案
按热度按时间tzdcorbm1#
必要的附录
~/.bashrc
:如何计算底部的程序:
如何为该程序生成jar文件:
运行命令:
程序如下: