Java实现hdfs文件读写
一、创建java maven工程对hdfs文件进行读取
1、新建maven工程
新建maven工程,选择quickstart方式
填写文件路径名及工程命
选择maven版本,并选择本机maven中的setting.xml
新建之后,选择enable自动导入包
2、修改pom.xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.0</version>
</dependency>
</dependencies>
3、java代码
注意代码这里需要在app的同级目录下新建一个class文件
package cn.kgc.kb11.test;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.apache.hadoop.yarn.api.records.URL;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class TestHDFS {
FileSystem fs;
public void initFS(String fsPath, String user) {
Configuration conf = new Configuration();
try {
fs = FileSystem.get(new URI(fsPath), conf, user);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
public void createDir(String path) {
try {
fs.mkdirs(new Path(path));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TestHDFS test = new TestHDFS();
test.initFS(args[0], args[1]);
test.createDir(args[2]);
}
二、jar包打包
选择main class
显示全类名
修改java包名
把jar包拷贝到 虚拟机 186.100的/opt/software 路径下
用一下语句进行文件创建
hadoop jar _20210319hdfs.jar cn.kgc.kb11.test.TestHDFS hdfs://hadoop100:9000 root /testHDFS/java/abc/dfs
hadoop 50070下文件夹创建成功
三、args[]传参方法
代码中的args String数组
public static void main(String[] args) {
TestHDFS test = new TestHDFS();
test.initFS(args[0], args[1]);
test.createDir(args[2]);
}
编辑本类的配置
传递参数,用空格隔开