1、常用文件API操作
package cn.luxh.app.util; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hdfs.DistributedFileSystem; import org.apache.hadoop.hdfs.protocol.DatanodeInfo; public class HDFSUtil { /** * 从本地复制文件到HDFS * @param srcFilePath * @param dstFilePath * @throws IOException */ public static void copyFile2HDFS(String srcFilePath,String dstFilePath) throws IOException{ Configuration conf = new Configuration(); Path src = new Path(srcFilePath); Path dst = new Path(dstFilePath); FileSystem hdfs = dst.getFileSystem(conf); hdfs.copyFromLocalFile(src, dst); FileStatus[] files = hdfs.listStatus(dst); if(files!=null) { for(int i=0;i<files.length;i++) { System.out.println("the file is:"+files[i].getPath().getName()); } }else { System.out.println("no files"); } hdfs.close(); } /** * 在HDFS上创建文件 * @param content * @param dstFile * @throws IOException */ public static void createFileInHDFS(String content,String dstFile) throws IOException { Configuration conf = new Configuration(); Path dst = new Path(dstFile); FileSystem hdfs = null; FSDataOutputStream out = null; try { hdfs = dst.getFileSystem(conf); out = hdfs.create(dst); out.writeBytes(content); out.flush(); } catch (IOException e) { e.printStackTrace(); throw new IOException(e); }finally { if(hdfs != null) { hdfs.close(); } if(out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * 重命名文件 * @param originalFile * @param newFile * @throws IOException */ public static void renameFileInHDFS(String originalFile,String newFile) throws IOException { Configuration conf = new Configuration(); Path originalPath = new Path(originalFile); Path newPath = new Path(newFile); FileSystem hdfs = newPath.getFileSystem(conf); hdfs.rename(originalPath, newPath); hdfs.close(); } /** * 获得文件的最后修改时间 * @param dstFile * @throws IOException */ public static void getFileLastModifyTime(String dstFile) throws IOException{ Configuration conf = new Configuration(); Path dstPath = new Path(dstFile); FileSystem hdfs = dstPath.getFileSystem(conf); FileStatus file = hdfs.getFileStatus(dstPath); long time = file.getModificationTime(); hdfs.close(); System.out.println("the last modify time is : "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(time))); } /** * 检查文件是否存在 * @param dstFile * @throws IOException */ public static void checkFileIsExists(String dstFile) throws IOException { Configuration conf = new Configuration(); Path dstPath = new Path(dstFile); FileSystem hdfs = dstPath.getFileSystem(conf); boolean flag = hdfs.exists(dstPath); hdfs.close(); System.out.println("is the file exists:"+flag); } /** * 获得文件的存放位置 * @param dstFile * @throws IOException */ public static void getFileLocations(String dstFile) throws IOException { Configuration conf = new Configuration(); Path dstPath = new Path(dstFile); FileSystem hdfs = dstPath.getFileSystem(conf); FileStatus file = hdfs.getFileStatus(dstPath); BlockLocation[] blkLocations = hdfs.getFileBlockLocations(file, 0, file.getLen()); if(blkLocations != null) { int len = blkLocations.length; for(int i=0;i<len;i++) { String[] hosts = blkLocations[i].getHosts(); for(String host:hosts) { System.out.println("the location'host is : "+host); } } } hdfs.close(); } /** * 删除文件 * @throws IOException */ public static void deleteFile(String dstFile) throws IOException { Configuration conf = new Configuration(); Path dstPath = new Path(dstFile); FileSystem hdfs = dstPath.getFileSystem(conf); boolean flag = hdfs.delete(dstPath, true); System.out.println("is deleted : "+flag); } }
2、测试
package cn.luxh.app.test; import java.io.IOException; import org.junit.Test; import cn.luxh.app.util.HDFSUtil; public class HDFSTester { @Test public void testCopyFile2HDFS() throws IOException { String srcFilePath = "/home/coder/words.txt"; String dstFilePath = "hdfs://h1:9000/user/coder/in"; HDFSUtil.copyFile2HDFS(srcFilePath, dstFilePath); } @Test public void testCreateFileInHDFS() throws IOException { String content = "hey,Hadoop."; String dstFile = "hdfs://h1:9000/user/coder/in/hey"; HDFSUtil.createFileInHDFS(content, dstFile); } @Test public void testRenameFileInHDFS() throws IOException { String originalFile = "hdfs://h1:9000/user/coder/in/hey"; String newFile = "hdfs://h1:9000/user/coder/in/hey_hadoop"; HDFSUtil.renameFileInHDFS(originalFile, newFile); } @Test public void testGetFileLastModifyTimme() throws IOException { String dstFile = "hdfs://h1:9000/user/coder/in/hey_hadoop"; HDFSUtil.getFileLastModifyTime(dstFile); } @Test public void testCheckFileIsExists() throws IOException { String dstFile = "hdfs://h1:9000/user/coder/in/hey_hadoop"; HDFSUtil.checkFileIsExists(dstFile); } @Test public void testGetFileLocations() throws IOException { String dstFile = "hdfs://h1:9000/user/coder/in/hey_hadoop"; HDFSUtil.getFileLocations(dstFile); } @Test public void testDeleteFile() throws IOException { String dstFile = "hdfs://h1:9000/user/coder/output"; HDFSUtil.deleteFile(dstFile); } }
相关推荐
A.2实验二:熟悉常用的HDFS操作 ...(3)熟悉HDFS操作常用的Java API。 A.2.2 实验平台 (1)操作系统:Linux(建议Ubuntu 16.04)。(2) Hadoop版本:2.7.1。 (3)JDK版本:1.7或以上版本。(4) Java IDE:Eclipse。
java操作Hadoop源码之HDFS Java API操作-上传文件,附带所需全部jar包,欢迎下载学习。
分布式文件系统hdfs 使用Java API操作HDFS分布式文件系统
适合刚接触hadoop的学生或小白,内容包括HDFS shell操作及HDFS Java API编程 有图片有代码
02--HDFS Java API操作.docx
很详细很简单的入门级操作HDFS文件上传,下载,查看,集群环境等接口API,可以按照代码写和API文档写自己需要的操作HDFS分布式文件系统的功能。
熟悉常用的HDFS操作 (1) 理解HDFS在Hadoop体系结构中的角色; (2) 熟练使用HDFS操作常用的Shell命令; (3) 熟悉HDFS操作常用的Java API。
本文档时Hadoop云计算平台下运用Hadoop API对HDFS进行相关的操作,详细的记录了程序在eclipse中的应用,代码内容和运行结果,是学习Hadoop非常有用的资料。
通过调用hdfs的api,进行文件上传、创建、删除、重命名等操作的代码
hadoop273 hdfs的IO操作API所引用的jar包 在client端可以通过api进行操作hdfs的逻辑文件系统
本示例介绍java通过api操作hdfs。 主要包含HDFS的读写、上传、下载、遍历、查找文件、整个目录拷贝、只拷贝文件、列出文件夹下文件、删除文件及目录、获取文件及文件夹属性等。 本文分为2个部分,即环境准备和示例。
ecplise远程连接hadoop--hdfs java api操作文件.pdf
3. 熟悉HDFS操作常用的Java API。 二、实验平台 1. 操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04); 2. Hadoop版本:3.1.3; 3. JDK版本:1.8; 4. Java IDE:Eclipse。 三、实验步骤(每个步骤下均需有运行截图...
本节将介绍 Linux 操作系统中关于 HDFS 文件操作的常用命令行,并将介绍利用 Hadoop 提供的 Java API 进行基本的文件操作,以及利用 Web 界面查看和管理 HDFS 的方法。 HDFS 常用命令 在 Linux 命令行终端,可以...
Hadoop HDFS的FileSystemAPI操作文件 将准备好的文件上传到hdfs的user/hadoop/music文件下
该资源是java通过api的方式来操作hadoop,主要有以下操作: 一.文件操作 1.上传本地文件到hadood 2.在hadoop中新建文件,并写入 3.删除hadoop上的文件 4.读取文件 5.文件修改时间 二.目录操作 1.在hadoop上创建目录 ...
Windows下配置Hadoop的Java开发环境以及用Java API操作HDFS: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119379055
一、实验目的 1. 理解 HDFS 体系架构。 2. 理解 HDFS 文件存储原理和数据读写过程。 3. 熟练掌握 HDFS Web UI 界面的使用...5. 使用 HDFS Java API 编写 HDFS 文件操作程序,实现上传本地文件到 HDFS 的功能。。。。。
3、熟悉HDFS操作常用的JavaAPI。 三.实验过程截图及说明 ...... 四. 实验总结及心得体会 实验总结: (1)在本实验中,我深入了解了HDFS在Hadoop体系结构中的角色,并熟练掌握了HDFS操作的常用Shell命令和Java API...
从本地上传文件到HDFS上的代码!使用hadoop的API操作,使本地文件的代码上传到HDFS上!!!