读取文件 FileSystemCat.java 和 FileSystemPut.java 中提供的分析 HDFS 应用程序
使用应用程序 FileSystemCat.java 和 FileSystemPut.java 在 Java HDFS 应用程序中实现,该应用程序将位于
HDFS 中的两个文件合并为同样位于 HDFS 中的一个文件。
应用程序必须具有以下参数。
(1) HDFS 中第一个输入文件的路径和名称。
(2) HDFS 中第二个输入文件的路径和名称。
(3) 要在 HDFS 中创建的输出文件的路径和新名称。该文件应该包含第一个输入文件的内容,后跟第二个输入文件的内
容。
实现应用程序并将其源代码保存在文件solution1.java中。
上传两个文件到HDFS。 HDSF 中文件的内容、名称和位置由您决定。
准备就绪后,编译、创建 jar 文件并处理您的应用程序。显示应用程序创建的结果。
使用Hadoop提供证据,上传到HDFS的两个文件已成功合并为HDFS中的一个文件。
文件solution1.txt,其中包含应用程序源代码列表、编译报告、jar 文件创建、上传到 HDFS 的两个小文件进行测试、
HDFS 中这两个文件的列表、应用程序的处理以及证明上传到 HDFS 的两个文件已成功合并为 HDFS 中的一个文件。
必须通过将终端窗口的内容复制/粘贴到文件solution1.txt 中来创建文件solution1.txt。
FileSystemCat.java:
// cc FileSystemCat Displays files from a Hadoop filesystem on standard output by using the FileSystem directly
//import java.io.InputStream;
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.fs.FSDataInputStream;
import org.apache.hadoop.io.IOUtils;
// vv FileSystemCat
public class FileSystemCat {
public static void main(String[] args) throws Exception {
String uri = args[0];
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);
FSDataInputStream in = null;
Path path = new Path(uri);
in = fs.open(path);
IOUtils.copyBytes(in, System.out, 4096, true);
}
}
// ^^ FileSystemCat
FileSystemPut.java is :
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.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.io.IOUtils;
public class FileSystemPut {
public static void main(String[] args) throws Exception {
String localStr = args[0];
String hdfsStr = args[1];
Configuration conf = new Configuration();
FileSystem local = FileSystem.getLocal(conf);
FileSystem hdfs = FileSystem.get(URI.create(hdfsStr), conf);
Path localFile = new Path(localStr);
Path hdfsFile = new Path(hdfsStr);
FSDataInputStream in = local.open(localFile);
FSDataOutputStream out = hdfs.create(hdfsFile);
IOUtils.copyBytes(in, out, 4096, true);
}
}