Windows下使⽤JavaAPI操作HDFS的常⽤⽅法场景
Windows下配置Hadoop的Java开发环境以及⽤Java API操作HDFS:
在上⾯将Hadoop的开发环境搭建起来之后,使⽤Java API 简单输出了⽂件⽬录。
那么对应HDFS的常⽤⽂件的操作还有哪些。
注:
实现
mkdirs方法1、获取HDFS⽂件系统
/**
* 获取HDFS⽂件系统
* @return
* @throws IOException
*/
public static FileSystem getFileSystem() throws IOException {
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS","hdfs://192.168.148.128:9000");
configuration.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
System.setProperty("HADOOP_USER_NAME","root");
FileSystem fileSystem = (configuration);
return fileSystem;
}
2、获取HDFS中所有的dataNodes
/**
* 获取HDFS中所有的dataNode
* @return
* @throws IOException
*/
public static void listDataNodeInfo() throws IOException {
FileSystem fs = getFileSystem();
DistributedFileSystem hdfs = (DistributedFileSystem) fs;
DatanodeInfo[] dataNodeStats =DataNodeStats();
String[] names = new String[dataNodeStats.length];
System.out.println("HDFS中所有的dataNode:");
for(int i=0;i<names.length;i++)
{
names[i]=dataNodeStats[i].getHostName();
System.out.println(names[i]);
}
}
3、创建⽂件夹
/**
* 创建⽂件夹
* @return
* @throws IOException
*/
public static void mkdir() throws IOException {
FileSystem fs = getFileSystem();
Path srcPath = new Path("/newDir");
boolean isok = fs.mkdirs(srcPath);
if(isok)
{
System.out.printf("创建⽂件夹成功");
}else
{
System.out.printf("创建⽂件夹失败");
}
fs.close();
}
4、删除⽂件夹
/**
* 删除⽂件夹
* @return
* @throws IOException
*/
public static void deletedir() throws IOException {
FileSystem fs = getFileSystem();
Path srcPath = new Path("/newDir");
boolean isok = fs.deleteOnExit(srcPath);
if(isok)
{
System.out.printf("删除⽂件夹成功");
}else
{
System.out.printf("删除⽂件夹失败");
}
fs.close();
}
5、判断⽂件是否存在
/
**
* 判断⽂件是否存在
* @return
* @throws IOException
*/
public static void checkFileExists() throws IOException { FileSystem fs = getFileSystem();
Path srcPath = new Path("/");
boolean isexist = fs.exists(srcPath);
if(isexist)
{
System.out.printf("⽂件存在");
}else
{
System.out.printf("⽂件不存在");
}
}
6、上传⽂件
/**
* 上传⽂件
* @return
* @throws IOException
*/
public static void uploadFile() throws IOException {
FileSystem fs = getFileSystem();
//源路径
Path srcPath = new Path("D:\\");
//⽬标路径
Path targetPath = new Path("/");
fs.close();
}
7、下载⽂件
/**
* 下载⽂件
* @return
* @throws IOException
*/
public static void downloadFile() throws IOException {
FileSystem fs = getFileSystem();
//源路径
Path targetPath = new Path("D:\\");
//⽬标路径
Path srcPath = new Path("/");
fs.close();
}
5、重命名⽂件
/**
* 重命名⽂件
* @return
* @throws IOException
*/
public static void renameFile() throws IOException {
FileSystem fs = getFileSystem();
//源路径
Path oldPath = new Path("/");
//⽬标路径
Path newPath = new Path("/");
boolean isok = fs.rename(oldPath,newPath);
if(isok)
{
System.out.printf("重命名成功");
}else
{
System.out.printf("重命名失败");
}
fs.close();
}
6、遍历⽬录和⽂件
/**
* 遍历⽬录和⽂件
* @return
* @throws IOException
*/
public static void showDir(Path path) throws IOException { FileSystem fs = getFileSystem();
DistributedFileSystem hdfs = (DistributedFileSystem) fs; FileStatus[] fileStatuses = hdfs.listStatus(path);
if(fileStatuses.length>0)
{
for (FileStatus status:fileStatuses) {
Path f = Path();
System.out.String());
if(status.isDirectory())
{
FileStatus[] files = hdfs.listStatus(f);
if(files.length>0)
{
for (FileStatus file:files) {
Path());
}
}
}
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论