java代码优化增删改查_编写Java代码对HDFS进行增删改查操作代码实例

本文实例为大家分享了Java代码对HDFS进行增删改查操作的具体代码,供大家参考,具体内容如下

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.net.URI;

import org.apache.commons.compress.utils.IOUtils;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.BlockLocation;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.FileStatus;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

public class FileOpreation {

public static void main(String[] args) throws IOException {

//CreateFile();

//DeleteFile();

//CopyFileToHDFS();

//MkDirs();

//DelDirs();

ListDirectory();

DownLoad();

}

public static void CreateFile() throws IOException {

String uri = "hdfs://Alvis:9000";

Configuration configuration =new Configuration();

FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);

byte[] file_content_buff="hello hadoop world, test write file !\n".getBytes();

Path dfs = new Path("/home/test.txt");

FSDataOutputStream outputStream = fSystem.create(dfs);

outputStream.write(file_content_buff.length);

}

public FileOpreation() {

// TODO Auto-generated constructor stub

}public static void DeleteFile() throws IOException {

String uri = "hdfs://Alvis:9000";

Configuration configuration =new Configuration();

FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);

Path deletf = new Path("/home/test.txt");

boolean delResult = fSystem.delete(deletf,true);

System.out.println(delResult==true?"删除成功":"删除失败");

}

public static void CopyFileToHDFS() throws IOException {

String uri = "hdfs://Alvis:9000";

Configuration configuration =new Configuration();

FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);

Path src = new Path("E:\\SerializationTest\\APITest.txt");

Path dest_src = new Path("/home");

fSystem.copyFromLocalFile(src, dest_src);

}

public static void MkDirs() throws IOException {

String uri = "hdfs://Alvis:9000";

Configuration configuration =new Configuration();

FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);

Path src = new Path("/Test");

fSystem.mkdirs(src);

}

public static void DelDirs() throws IOException {

String uri = "hdfs://Alvis:9000";

Configuration configuration = new Configuration();

FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);

Path src = new Path("/Test");

fSystem.delete(src);

}

public static void ListDirectory() throws IOException {

String uri = "hdfs://Alvis:9000";

Configuration configuration = new Configuration();

FileSystem fSystem = FileSystem.get(URI.create(uri), configuration);

FileStatus[] fStatus = fSystem.listStatus(new Path("/output"));

for(FileStatus status : fStatus)

if (status.isFile()) {

System.out.println("文件路径:"+status.getPath().toString());

System.out.println("文件路径 getReplication:"+status.getReplication());

System.out.println("文件路径 getBlockSize:"+status.getBlockSize());

BlockLocation[] blockLocations = fSystem.getFileBlockLocations(status, 0, status.getBlockSize());

for(BlockLocation location : blockLocations){

System.out.println("主机名:"+location.getHosts()[0]);

System.out.println("主机名:"+location.getNames()[0]);

}

}

else {

System.out.println("directory:"+status.getPath().toString());

}

}

public static void DownLoad() throws IOException {

Configuration configuration = new Configuration();

configuration.set("fs.defaultFS", "hdfs://Alvis:9000");

FileSystem fSystem =FileSystem.get(configuration);

FSDataInputStream inputStream =fSystem.open( new Path("/input/wc.jar"));

FileOutputStream outputStream = new FileOutputStream(new File("E:\\LearnLife\\DownLoad\\wc.jar"));

IOUtils.copy(inputStream, outputStream);

System.out.println("下载成功!");

}

}

思想:

一、定义虚拟机接口

二、先拿到HDFS远程调用接口对象Configuration

三、定义分布式文件系统FileSystem对象获取对象

四、给定路径

五、用FileSystem对象调用操作

以上所述是小编给大家介绍的Java代码对HDFS进行增删改查操作详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值