HDFS Java API使用之读取上传文件

package com.ibeifeng.hadoop.senior.hdfs;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IOUtils;

/**

*

* @author wangw

*

*/

public class HdfsApp {

/**

*

* @return

* @throws Exception

* get filesystem

*/

public static FileSystem getFileSystem() throws Exception {

// core-site.xml

Configuration conf = new Configuration();

//get filesystem

FileSystem fileSystem = FileSystem.get(conf);

//System.out.println(fileSystem);

return fileSystem;

}

/**

* read data

* @param fileName

* @throws Exception

*/

public static void read(String fileName) throws Exception {

//get filesystem

FileSystem fileSystem = getFileSystem();

//String fileName = "/user/wangw/mapreduce/wordcount/wc.input";

// read path

Path readPath = new Path(fileName);

//open file

FSDataInputStream inStream = fileSystem.open(readPath);

//

try{

//read

IOUtils.copyBytes(inStream, System.out, 4096, false);

}catch(Exception e){

e.printStackTrace();

}finally{

// close Stream

IOUtils.closeStream(inStream);

}

}

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

//String fileName = "/user/wangw/mapreduce/wordcount/wc.input";

//read(fileName);

//get filesystem

FileSystem fileSystem = getFileSystem();

// write path

String putFileName = "/user/wangw/put-wc.input";

Path writePath = new Path(putFileName);

//Output Stream

FSDataOutputStream outStream = fileSystem.create(writePath);

// file input Stream

FileInputStream inStream = new FileInputStream(new File(

"/opt/modules/hadoop-2.5.0/wc.input"));

// stream read/write

try{

//read

IOUtils.copyBytes(inStream, outStream, 4096, false);

}catch(Exception e){

e.printStackTrace();

}finally{

// close Stream

IOUtils.closeStream(inStream);

IOUtils.closeStream(outStream);

}

}

}

时间: 2024-10-15 19:26:42

HDFS Java API使用之读取上传文件的相关文章

不经保存,直接读取上传文件的内容

<%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server&qu

JAVA模拟HTTP post请求上传文件

在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较麻烦的事情就是构造文件上传的HTTP报文格式,这个格式虽说也比较简单,但也比较容易出错.今天我们就一起来学习HTTP POST的报文格式以及通过Java来模拟文件上传的请求. 首先我们来看一个POST的报文请求,然后我们再来详细的分析它. POST报文格式 [plain] view plain co

原生API实现拖拽上传文件实践

功能: 拖拽上传文件.图片,上传的进度条,能够同时上传多个文件. 完整的demo地址:https://github.com/qcer/FE-Components/tree/master/QDrag 涉及到的API: 1.HTML5的拖拽事件:dragenter,dragover,drop等 2.XMLHttpRequest  Level2 3.FormData 4.(扩展:HTML5的File API) 概述: 1.利用拖拽实践的API将一个普通的div自定义成一个放置目标,这里有一个技巧是放置

java前后分离使用fetch上传文件失败500

这次不是写什么技术要点,仅仅是记录一下 最近遇到的一个问题 背景 使用fetch向java后台上传文件时,前端调试报错500,后端的报错为multipart 无法解析,翻译过来大概是这个意思. 由于本人不会java所以这里只是记录一下前端的注意事项. 原因 问题的主要原因在于,我在上传时设置了contenttype,这里就不得不提一下,fetch中由于之前使用的时候如果我不设置contenttype那么我向后端传送json时就会报错. 因为contenttype本来就是用于设置http的格式的,

利用Java API通过路径过滤上传多文件至HDFS

在本地文件上传至HDFS过程中,很多情况下一个目录包含很多个文件,而我们需要对这些文件进行筛选,选出符合我们要求的文件,上传至HDFS.这时就需要我们用到文件模式. 在项目开始前,我们先掌握文件模式 1.文件模式 在某个单一操作中处理一系列文件是很常见的.例如一个日志处理的MapReduce作业可能要分析一个月的日志量.如果一个文件一个文件或者一个目录一个目录的声明那就太麻烦了,我们可以使用通配符(wild card)来匹配多个文件(这个操作也叫做globbing). Hadoop提供了两种方法

关于读取上传文件问题的两个解决办法

为什么要写这样一个博客呢,因为在J2EE开发中,我在获取文件的本地路径时,发现获取不到. 明明是在其他盘符下的文件,可是在用js获取文件路径的时候,会得到一个fakepath的目录,查了资料才知道这个是后来浏览器为了安全不给显示文件的全路径了,这TM的就很尴尬了,比如我在后台只想要这个文件的路径的时候,给我的是 一个假路径,尴不尴尬 这是我在做Excel导入的时候,需要一个文件的完整路径,我想从本地获取这个文件的完整路径,结果被浏览器给玩了. 后来,我想到的一个很无奈的办法就是,本地的路径我取不

Java利用 ganymed-ssh2-build.jar来上传文件到linux以及下载linux文件以及执行linux shell命令

package api; import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;import java.io.InputStream;import org.apache.log4j.*;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.SCPClient;import ch.ethz.ssh2.Session;impor

HDFS基本命令行操作及上传文件的简单API

一.HDFS基本命令行操作: 1.HDFS集群修改SecondaryNameNode位置到hd09-2 (1)修改hdfs-site.xml <configuration> //配置元数据存储位置 <property> <name>dfs.namenode.name.dir</name> <value>/root/hd/dfs/name</value> </property> //配置数据存储位置 <property

Java进阶学习第二十二天——上传与下载

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.06.05 lutianfei none Servlet规范中 servlet有初始化参数 Filter有初始化参数 Listener没有初始化参数,要使用,在开发中一般使用<context-param> servletContext的初始化参数. 文件上传 问题:什么是文件上传?为什么使用文件上传? 就是将客户端资源,通过网络传递到服务器端. 就是因为数据比较大,我们必须通过文件上传才可以完成将数据保存到服务器端操