HDFS编程主要API

Hadoop类 功能
org.apache.hadoop.fs.FileSystem 一个通用文件系统的抽象基类,可以被分布式文件系统继承。所有的可能使用Hadoop文件系统的代码都要使用到这个类。
org.apache.hadoop.fs.FileStatus 客户端可见的文件状态信息。
org.apache.hadoop.fs.FSDataInputStream 文件输入流,用于读取Hadoop文件。
org.apache.hadoop.fs.FSDataOutputStream 文件输出流,用于写Hadoop文件。
org.apache.hadoop.fs.permission.FsPermission 文件或者目录的权限
org.apache.hadoop.conf.Configuration 访问配置项。所有的配置项的值,如果没有专门配置,以core-default.xml为准;否则,以core-site.xml中的配置为准。

对于Hadoop文件系统中的文件的访问是基于 InputStream 和 OutputStream 的流式访问

import java.io.IOException;
import java.net.URI; import org.apache.hadoop.conf.Configuration;
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 Operation { private static Configuration conf = new Configuration(); public static void putMerge(String inputDir, String hdfsFile) throws IOException{
FileSystem hdfs = FileSystem.get(conf);
FileSystem local = FileSystem.getLocal(conf);
Path inputPath = new Path(inputDir);
Path hdfsPath = new Path(hdfsFile);
FileStatus[] inputFiles = local.listStatus(inputPath);
FSDataOutputStream out = hdfs.create(hdfsPath);
System.out.println("inputFiles length -> " + inputFiles.length);
for(FileStatus inputFile:inputFiles){
System.out.println(inputFile.getPath().getName());
FSDataInputStream in = local.open(inputFile.getPath());
byte[] buffer = new byte[256];
int read = -1;
while((read = in.read(buffer))>0){
out.write(buffer,0,read);
}
in.close();
}
} public static void list(String hdfs) throws IOException{
FileSystem fs = FileSystem.get(URI.create(hdfs), conf);
FileStatus fileList[] = fs.listStatus(new Path(hdfs));
int FileNum = fileList.length;
for(int fileCount = 0; fileCount < FileNum; fileCount++){
System.out.println(fileList[fileCount].getPath().getName() + " : " + fileList[fileCount].getLen());
}
} public static void delete(String hdfs) throws IOException{
FileSystem fs = FileSystem.get(URI.create(hdfs), conf);
fs.deleteOnExit(new Path(hdfs));
} public static void main(String[] args) throws IOException {
putMerge("/root/test", "hdfs://localhost:9000/user/root/test");
list("hdfs://localhost:9000/user/root");
delete( "hdfs://localhost:9000/user/root/test");
} }

HDFS编程的更多相关文章

  1. 暑假第四周总结(HDFS编程实践,安装HBASE)

    本周根据书上以及教程的提示,对HDFS进行了编程实践,将教程所给的代码(判断文件是否存在,创建文件,读取文件)进行了应用,根据视频的讲解,对一些简单的语句有了一定的了解,但还是比较生疏.另外还根据提示 ...

  2. Hadoop HDFS编程 API入门系列之HdfsUtil版本2(七)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs1; import java.io.FileInputStream;import ...

  3. Hadoop HDFS编程 API入门系列之HdfsUtil版本1(六)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs2; import java.io.FileOutputStream;impor ...

  4. Hadoop HDFS编程 API入门系列之HDFS_HA(五)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs3; import java.io.FileInputStream;import ...

  5. Hadoop HDFS编程 API入门系列之简单综合版本1(四)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs4; import java.io.IOException; import ja ...

  6. Hadoop HDFS编程 API入门系列之合并小文件到HDFS(三)

    不多说,直接上代码.  代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs7; import java.io.IOException;import ja ...

  7. Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs6; import java.io.IOException;import jav ...

  8. Hadoop HDFS编程 API入门系列之从本地上传文件到HDFS(一)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs5; import java.io.IOException; import ja ...

  9. Hadoop HDFS编程 API入门系列之RPC版本2(九)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.RPC.rpc2; public class LoginServiceImpl implement ...

随机推荐

  1. Webkit初始化以及载入URL过程中各种对象的建立时序以及DOM树的建立详情分析

            众所周知,Webkit须要创建DOM树. 为此它须要创建WebView, Chrome,Page,Frame, Document. Document Parser, DOM Tree ...

  2. jquery的liveQuery插件

    一.livequery插件简介 jQuery的事件绑定功能使得jQuery代码与HTML代码能够完全分离,这样代码的层次关系更加清晰,维护起来也更加简单.然而对于动态加载到页面的HTML元素,每次都需 ...

  3. Debian7/8安装最新的nginx稳定版本

    我们知道,通过 apt-get install nginx 就可以安装上nginx,可惜这样安装的nginx版本都有些旧,就连最新的Debian 8.0 默认安装的仍然是1.6.2,更别说 Debia ...

  4. ubuntu 16.04 安装 ITDB

    其实标题本不应该是这个 之前也部署过itdb,这款软件本身不必多言,来自希腊的精品.最近因为单位需要,又要重新部署.前几年部署itdb的时候用的是ub14,但目前最新的是ub16,于是就部署呗.但在后 ...

  5. c函数声明前加typedef是什么情况

    刚才看到APUE(高级UNIX环境编程)里面的apue.h中有一行 typedef void Sigfunc(int); 没搞懂什么意思 其实就是定义一个函数指针类型,等价于 typedef void ...

  6. FreeRTOS基础知识

    前面一篇文章介绍了一些命名规范之类的基础知识,但是我觉得还缺少一定前言知识,就是裸机和操作系统有什么区别,为什么我们需要学freertos,因为招聘要求?那么为什么招聘网又会有这个要求呢?所以我们为什 ...

  7. GPIO输出—使用固件库点亮LED

    为了使工程更加有条理,我们把 LED 灯控制相关的代码独立分开存储,方便以后移植.在“工程模板”之上新建“ bsp_led.c”及“ bsp_led.h”文件,其中的“ bsp”即 BoardSupp ...

  8. lua字符串对齐函数

    最近要用到字符串对齐,开始只是一部分字符串,就直接加空格了,后来发现有很多, 于是写了个字符串对齐的函数. --功能:分割字符串 --参数:带分割字符串,分隔符 --返回:字符串表 function ...

  9. contract

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  10. 关于为空必填js判断

    为了减少一不必要的if逻辑判断,自已写了一个方法 $(function () { $("#btnAdd").click(function () { var strLinValu = ...