1、HDFS读文件
2、HDFS写文件
3、实例操作
3.1新建Mawen工程
3.2在pom.xml中将标签中内容替换为以下代码,静待依赖包下载完毕
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-client -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hdfs -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!--<scope>test</scope>-->
</dependency>
</dependencies>
3.3在src/java下新建java工程
以下共有5个案例
1、创建文件夹
2、创建文件并写入数据
3、读取文件并在控制台展示
4、复制本地文件到hdfs
5、 复制hdfs文件到本地
package cn.kgc.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
/**
* @author czg
* date
* description
*/
public class HdfsClient {
// 创建文件夹
@Test
public void mkdir() throws URISyntaxException, IOException, InterruptedException {
// 1、创建配置文件
// 要确认是org.apache.hadoop.conf.Configuration;
Configuration conf=new Configuration();
// 2\获取文件系统
FileSystem fs=FileSystem.get(new URI("hdfs://192.168.157.200:9000"),conf,"root");
// 3、调用ApI操作
fs.mkdirs(new Path("/user/java"));
// 4、关闭流
fs.close();
}
// 创建文件并写入数据
@Test
public void create() throws URISyntaxException, IOException, InterruptedException {
// 1、创建配置文件
// 要确认是org.apache.hadoop.conf.Configuration;
Configuration conf=new Configuration();
// 2、获取文件系统
FileSystem fs=FileSystem.get(new URI("hdfs://192.168.157.200:9000"),conf,"root");
// 3、调用ApI操作
// 创建文件并写入数据
FSDataOutputStream in=fs.create(new Path("/user/java/b.txt"));
in.write("Hello,HDFS".getBytes());
in.flush();
// 4、关闭流
fs.close();
}
// 读取文件并在控制台展示
@Test
public void cat() throws URISyntaxException, IOException, InterruptedException {
// 1、创建配置文件
// 要确认是org.apache.hadoop.conf.Configuration;
Configuration conf=new Configuration();
// 2、获取文件系统
FileSystem fs=FileSystem.get(new URI("hdfs://192.168.157.200:9000"),conf,"root");
// 3、调用ApI操作
// 创建文件并写入数据
FSDataInputStream out=fs.open(new Path("/user/java/b.txt"));
IOUtils.copyBytes(out,System.out,1024);
// 4、关闭流
fs.close();
}
// 复制本地文件到hdfs
@Test
public void copyFromLocalFile() throws URISyntaxException, IOException, InterruptedException {
// 1、创建配置文件
// 要确认是org.apache.hadoop.conf.Configuration;
Configuration conf=new Configuration();
// 2、获取文件系统
FileSystem fs=FileSystem.get(new URI("hdfs://192.168.157.200:9000"),conf,"root");
// 3、调用ApI操作
// 第一个newPath(hdfs中的路径),第二个new Path(文件在本机中的路径)
fs.copyFromLocalFile(new Path("C:\\xuexi\\hdfs\\data\\test.txt"),new Path("/user/java"));
// 4、关闭流
fs.close();
}
// 复制hdfs文件到本地
@Test
public void copyTplocalFile() throws URISyntaxException, IOException, InterruptedException {
// 1、创建配置文件
// 要确认是org.apache.hadoop.conf.Configuration;
Configuration conf=new Configuration();
// 2、获取文件系统
FileSystem fs=FileSystem.get(new URI("hdfs://192.168.157.200:9000"),conf,"root");
// 3、调用ApI操作
// 第一个newPath(hdfs中的路径),第二个new Path(文件在本机中的路径)
// fs.copyToLocalFile(new Path("/user/java/test.txt"),new Path("C:\\xuexi\\hdfs\\data"));
// 运行如果出现空指针:
// copyToLocalFile方法第一个参数和最后一个解析:
// 第一个参数控制下载完成后是否删除源文件,默认是 true,即删除;
// 最后一个参数表示是否将 RawLocalFileSystem 用作本地文件系统;
// RawLocalFileSystem 默认为 false,通常情况下可以不设置,
// 但如果你在执行时候抛出 NullPointerException 异常,则代表你的文件系统与程序可能存在不兼容的情况 (window 下常见),
// 此时可以将 RawLocalFileSystem 设置为 true
fs.copyToLocalFile(true,new Path("/user/java/test.txt"),new Path("C:\\xuexi\\hdfs\\data"),true);
// 4、关闭流
fs.close();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)