栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hadoop Java API使用笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hadoop Java API使用笔记

目录         一.mkdir方法(创建方法)         二.delete方法(删除方法)         三.copyFromLocalFile方法(上传方法)         四.copyToLocalFile方法(下载方法)

----------------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------------

一.mkdir方法

修饰符和类型

方法

static boolean

mkdirs(FileSystem fs,Path dir,fs)

boolean

mkdirs(Path f)

abstract boolean

mkdirs(Path f,FsPermission permission)

参数说明

f:给定路径

fs:文件系统对象。

dir:要创建的目录名称

permission:为该目录设置的权限

        e.g.使用mkdirs(Path f)方法在HDFS上创建目录"/user/root/login",具体代码如下

package APItest;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class MkdirTest {
 public static void main(String[] args) throws IOException {
//获取配置
  Configuration conf =new Configuration();
  conf.set("fs.defaultFS","master:8020");
//获取文件系统  
  FileSystem fs=FileSystem.get(conf);
//声明创建的目录
  Path path=new Path("/user1/root/login");
//调用mkdirs函数创建目录
  fs.mkdirs(path);
//关闭文件系统
  fs.close();
}
}

  二.delete方法

修饰符和类型

方法

boolean

delete(Path f)

abstract boolean

delete(Path f , boolean recursive)

 参数说明

f:给定路径

recursive:如果路径是一个目录且不为空,将recursive设为true,则该目录将被删除,否则会引发异常。在是文件的情况下,recursive可以设为true或false。

        e.g.使用delete(Path f , boolean recursive)删除HDFS上/user/root/login目录下的user_login.txt文件,具体代码如下

package APItest;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class DeleteTest {
	 public static void main(String[] args) throws IOException {
    //获取配置
		  Configuration conf =new Configuration();
		  conf.set("fs.defaultFS","master:8020");
    //获取文件系统
		  FileSystem fs=FileSystem.get(conf);
    //声明文件路径
		  Path path=new Path("/user/root/login/user_login.txt");
    //删除文件
		  fs.delete(path,true);
    //关闭文件系统
		  fs.close();
}
}

三.copyFromLocalFile方法

修饰符和类型

方法

void

copyFromLocalFile(boolean delSrc,boolean overwrite,Path[ ] Srcs,Path dst)

void

copyFromLocalFile(boolean delSrc,boolean overwrite,Path Src,Path dst)

void

copyFromLocalFile(boolean delSrc, Path Src,Path dst)

void

copyFromLocalFile(Path Src,Path dst)

参数说明

delSrc:是否删除原文件

overwrite:是否覆盖已存在的文件

srcs:储存源文件路径的数组

dst:目标路径

src:源文件路径

        e.g.使用copyFromLocalFile(Path Src,Path dst)方法将本地F盘中的user_login.txt文件上传到HDFS上的/user/root目录下

package APItest;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class UploadTest {
	 public static void main(String[] args) throws IOException {
		 //获取配置
		  Configuration conf =new Configuration();
		  conf.set("fs.defaultFS","master:8020");
		 //获取文件系统 
		  FileSystem fs=FileSystem.get(conf);
		 //声明源文件路径和目标路径
		  Path fromPath = new Path("D:/user_login.txt");
		  Path topath=new Path("/user/root");
		 //调用copyFromLocalFile方法上传文件
		  fs.copyFromLocalFile(fromPath,topath);
		 //关闭文件系统
		  fs.close();
}
}

四.copyToLocalFile方法 

修饰符和类型

方法

void

copyToLocalFile(boolean delSrc,Path Src,Path dst)

void

copyToLocalFile (boolean delSrc, Path Src,Path dst,boolean useRawLocalFileSystem)

void

copyToLocalFile (Path Src,Path dst)

参数说明

delSrc:是否删除原文件 

src:源文件路径 

dst:目标路径 

useRawLocalFileSystem:是否使用原始文件系统作为本地文件系统

        e.g.使用copyToLocalFile (boolean delSrc, Path Src,Path dst,boolean useRawLocalFileSystem)方法将HDFS上/user/root目录下的user_login.txt文件下载到本地D盘中,具体代码如下

package APItest;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class DownloadTest {
	 public static void main(String[] args) throws IOException {
        //获取配置
		  Configuration conf =new Configuration();
		  conf.set("fs.defaultFS","master:8020");
        //获取目标文件
		  FileSystem fs=FileSystem.get(conf);
        //声明源文件路径和目标路径
		  Path fromPath = new Path("/user/root/user_login.txt");
		  Path topath=new Path("D:/");
        //调用copyToLocalFile方法下载文件到本地,其中useRawLocalFileSystem为true,表示使用原始文件系统作为本地文件系统,为false则表示不使用原始文件系统作为本地文件系统
		  fs.copyToLocalFile(false,fromPath,topath,true);
        //关闭文件系统
		  fs.close();
}
}

注:

在使用delete方法删除文件时程序运行可能会报"Permission denied: "的异常,是因为权限不足导致的,解决方法需要在hadoop配置文件中的hdfs -site.xml加入如下内容,加入完成后重启集群即可解决,若使用其他方法也报"Permission denied: "的异常,也使用此方法解决


  dfs.permissions
  false
  
    If "true", enable permission checking in HDFS.
    If "false", permission checking is turned off,
    but all other behavior is unchanged.
    Switching from one parameter value to the other does not change the mode,
    owner or group of files or directories.
  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571866.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号