HDFS开发实例

1、列出HDFS中的文件

 1 package com.hdfs.test;
 2
 3 import java.io.BufferedReader;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.InputStreamReader;
 7 import java.net.URI;
 8 import org.apache.hadoop.conf.Configuration;
 9 import org.apache.hadoop.fs.FSDataInputStream;
10 import org.apache.hadoop.fs.FileStatus;
11 import org.apache.hadoop.fs.FileSystem;
12 import org.apache.hadoop.fs.FileUtil;
13 import org.apache.hadoop.fs.Path;
14
15 public class AccessHdfs {
16     public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException{
17
18         //以下两句仅用于在windows下访问服务器中的HDFS时,解决特定的错误问题
19         System.setProperty("hadoop.home.dir", "C:/Users/learn/Desktop/hadoopfiles");
20         System.setProperty("HADOOP_USER_NAME","hadoop");
21
22         Configuration conf = new Configuration();
23
24         //conf.set("fs.defaultFS", "hdfs://192.168.1.215:9000");
25         //FileSystem fS = FileSystem.get(conf);
26         //如果不在conf中设置,可以这样写:
27         FileSystem fS = FileSystem.get(URI.create("hdfs://192.168.1.215:9000"), conf);
28
29         //列出目录
30         String dir = "/";
31         FileStatus[] fileStatus = fS.listStatus(new Path(dir));
32         Path[] list = FileUtil.stat2Paths(fileStatus);
33         for(Path path : list){
34             System.out.println(path.toString());
35         }
36         fS.close();
37     }
38
39 }

注:

1> 如果出现了java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries 这种错误,可以通过设置设置HADOOP_HOME 环境变量来解决,在本例中,即使用System.setProperty("hadoop.home.dir", "C:/Users/learn/Desktop/hadoopfiles");这句代码,除此之外,还需要在设置的路径C:/Users/learn/Desktop/hadoopfiles中建立一个bin文件夹,并从网络上下载winutils.exe文件,放到这个bin文件夹中。

2> System.setProperty("HADOOP_USER_NAME","hadoop");这句用于设置用户名,这是因为在linux中Hadoop系统的所有者被设置为hadoop用户,在windows下访问时可以这样显式的指定,如果没有指定,系统会将windows系统的当前用户作为访问Hadoop系统的用户,出现类似Permission denied的错误。

3> 当打包成jar文件时,以上两句是不需要的。

4> FileSystem用来获取文件系统的一个实例,FileStatus包含了文件中的元数据

2、创建目录与删除目录

 1 Configuration conf = new Configuration();
 2 FileSystem fS = FileSystem.get(URI.create("hdfs://192.168.1.215:9000"), conf);
 3
 4 //创建目录
 5 fS.mkdirs(new Path("TestData"));
 6 fS.mkdirs(new Path("/DataWorld"));
 7
 8 //删除目录,如果是空的路径,可以忽略第二个参数
 9 fS.delete(new Path("TestData"),true);
10
11 fS.close();        

 注意上传的路径,如果没有指定根目录,则是/user/用户名/目录名

3、上传文件与读取文件

 1 Configuration conf = new Configuration();
 2 FileSystem fS = FileSystem.get(URI.create("hdfs://192.168.1.215:9000"), conf);
 3
 4 //上传文件
 5 Path src = new Path("C:/Users/learn/Desktop/hadoopfiles/Test.txt");
 6 Path dst = new Path("TestData");
 7 fS.copyFromLocalFile(src, dst);
 8
 9 //读取文件
10 String filedir = "TestData/Test.txt";
11 FSDataInputStream file = fS.open(new Path(filedir));
12 BufferedReader in = null;
13 String line;
14 in =new BufferedReader(new InputStreamReader(file, "UTF-8"));
15 while ((line = in.readLine()) != null) {
16     System.out.println(line);
17 }
18 if(in !=null){
19     in.close();
20 }

也可以打包成jar文件运行

时间: 2024-11-06 05:39:20

HDFS开发实例的相关文章

深入浅出Hadoop实战开发实例视频教程

Hadoop实例视频教程-深入浅出Hadoop实战开发Hadoop是什么,为什么要学习Hadoop?Hadoop是一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上.而且它提供高传输率(high throughput

Cocos2d-x 3.X手游开发实例详解

Cocos2d-x 3.X手游开发实例详解(最新最简Cocos2d-x手机游戏开发学习方法,以热门游戏2048.卡牌为例,完整再现手游的开发过程,实例丰富,代码完备,Cocos2d-x作者之一林顺和泰然网创始人杨雍力荐) 于浩洋 著   ISBN 978-7-121-23998-4 2014年9月出版 定价:59.00元 356页 16开 编辑推荐 以Cocos2d-x V3.0为框架全面讲解手游开发的知识和方法 以热门游戏2048.卡牌为例,完整再现手游的开发过程 Cocos2d-x作者之一林

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(下)

在飞机大战游戏开发中遇到的问题和解决方法: 1.在添加菜单时,我要添加一个有背景的菜单,需要在菜单pMenu中添加一个图片精灵,结果编译过了但是运行出错,如下图: 查了很多资料,调试了很长时间,整个人都要崩溃了. 最后发现引擎中CCMenu::itemForTouch函数中有遍历子节点的行为,但是循环中没有判断子节点类型是否为CCMenuItem.如图:码,这样一来,加入到pMenu中的图片精灵被当作菜单项取了出来使用,导致报错.老版本的果然又不完善的地方,整个人都不好了...果断修改引擎里的源

Android手机拨打电话的开发实例

一部手机最常用的功能就是打电话和发短信了,在Android开发中我们如何通过程序拨打电话呢?本文就给出一个用Android手机拨打电话的简单的实例. 下面是开发此实例的具体步骤: 一.新建一个Android工程,命名为phoneCallDemo. 二.设计程序的界面,打开main.xml把内容修改如下: XML/HTML代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

《HTML 5网页开发实例详解》目录

第一篇  从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的整体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1  你是不是真的了解HTML 5 1.1.1  通过W3C认识HTML 5的发展史 1.1.2  HTML 5.HTML4.XHTML的区别 1.1.3  什么人应该学HTML 5 1.1.4  一个图告诉你如何学习HTML 5 1.2  浏览器之争 1.2.1  说说这些常见的浏览器 1.2.2  浏览器的兼容烦

JDBC - 开发实例 - MVC模式

JDBC - 开发实例 - MVC模式  1. 在web.xml中配置连接数据库的信息 web.xml: <context-param> <param-name>server</param-name> //主机名 <param-value>localhost</param-value> </context-param> <context-param> <param-name>db</param-name&

ZabbixAPI+django+nginx简单的二次开发实例(三)

接上一篇博文 ZabbixAPI+django+nginx简单的二次开发实例(二) 步骤三,站点架构部分 本部分用到的软件 1,Nginx:接受访问请求,应答静态页面,转发动态请求至uwsgi 2,uwsgi:应答动态请求 3,Django:处理后台数据 4,supervisor:管理进程 首先安装Nginx yum install epel-release yum install python-devel nginx 修改配置文件 vim /etc/ngnix/ngnix.conf user

基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(中)

接<基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)> 三.代码分析 1.界面初始化 1 bool PlaneWarGame::init() 2 { 3 bool bRet = false; 4 do 5 { 6 CC_BREAK_IF(! CCLayer::init()); 7 8 _size = CCDirector::sharedDirector()->getWinSize(); 9 10 // 设置触摸可用 11 this->setIsTouchEnabled

ZabbixAPI+django+nginx简单的二次开发实例(五)

接上一篇博文 ZabbixAPI+django+nginx简单的二次开发实例(四) 步骤五,图形展示 写一个RRDtool图形展示的脚本,由于要和view.py联动,我放在了appname的文件夹下 cd /API/web/pos/moniter vim rrddraw.py #!/usr/bin/env python #coding=utf-8 import rrdtool #ping的图形 def itemping(data): pngname = str(data['pname']) #图