Hdfs readline

转载地址:http://dacoolbaby.iteye.com/blog/1955427

一致疏于JAVA IO方面的基础学习。

这次在使用到HDFS的文件接口的时候,就遇到这方面的问题。

于是巩固一下基础。

java io是典型的decorator设计模式。

Path path = new Path(“路径”);

FSDataIOutputStream fdos = fs.append(path); //追加

fdos.write……即可

fdos.flush();//刷出数据

FSDataInputStream fdis = fs.open(path);

Text line = new Text();

LineReader reader = new LineReader(fdis); //一行一行的读 使用LineReader

while(reader.readLine(line) > 0) {

System.out.println(line);//输出

}

fdis.close();

使用bufferedReader读取

String uri = "hdfs://localhost:9000/hadoop/test/IP-COUNTRY-REGION-CITY.CSV.hive";

Configuration conf = new Configuration(); 
FileSystem fs = null; 
FSDataInputStream in = null; 
BufferedReader d = null;

try { 
    fs = FileSystem.get(URI.create(uri), conf); 
    in = fs.open(new Path(uri)); 
    d = new BufferedReader(new InputStreamReader(in));   //使用BufferedReader 进行readLine
    String s = null; 
    int stat = 1; 
    while (true) { 
        System.out.println("line "+stat++); 
        s = d.readLine();

    public class JavaFile01 {  

    //InputStream 三个基本的读方法
    //abstract int read() :读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。
    //int read(byte[] b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。
    //int read(byte[] b, int off, int len) :将数据读入一个字节数组,同时返回实际读取的字节数。
    //如果返回-1,表示读到了输入流的末尾。
    //off指定在数组b中存放数据的起始偏移位置;
    //len指定读取的最大字节数。  

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

        File f = new File("a.txt");
        //InputStream是一个标准的输入接口
        //对应读取数据的类有:FileInputStream ObjectInputStream等  

        //XXXInputStream就是为InputStream对象赋予额外的功能,
        InputStream in = new BufferedInputStream(new FileInputStream(f));
        byte[] b = new byte[1024];
        while(in.read()!=-1){
            try {
            in.read(b);
            System.out.println("读入buffer的信息:"+new String(b));
            } catch (IOException e) {
            e.printStackTrace();
            }
        }  

    //  InputSteream和OutpurStream是针对基于字节(byte)输入输出设计的,实际应用中常常需要读
    //  写的是基于字符(char ,Unicode 2 个字节)的,java.io.Reader和java.io.Writer就是所有读
    //  写字符数据流的父类。  

        //FileReader作为Reader对象的数据源
        BufferedReader brin = new BufferedReader(new FileReader("a.txt"));  

        //Stream与Reader之间的转换
        InputStreamReader isr = new InputStreamReader(in);//<--Stream输入
        BufferedReader reader = new BufferedReader(isr);//使用Reader进行读取
        System.out.println(reader.readLine());
        }  

    }  
时间: 2024-11-01 07:07:36

Hdfs readline的相关文章

Java API 读取HDFS目录下的所有文件

/** * 获取1号店生鲜食品的分类id字符串 * @param filePath * @return */ public String getYHDSXCategoryIdStr(String filePath) { final String DELIMITER = new String(new byte[]{1}); final String INNER_DELIMITER = ","; // 遍历目录下的所有文件 BufferedReader br = null; try { F

HDFS Java Client对hdfs文件增删查改

step1:增加依赖 pom.xml ... <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.2.0</versio

java操作hdfs到数据库或者缓存

使用hadoop工具将数据分析出来以后,需要做入库处理或者存到缓存中,不然就没了意义 一下是使用javaAPI操作hdfs存入缓存的代码: <span style="font-family:Microsoft YaHei;font-size:14px;">public class InterestToRedisJob { FileSystem hdfs = null; public InterestToRedisJob(){ init(); } private void i

如何恢复未释放租约的HDFS文件

之前有文章介绍过HDFS租约带来的问题,导致spark应用无法正常读取文件,只能将异常文件找出并且删除后,任务才能继续执行. 但是删除文件实在是下下策,而且文件本身其实并未损坏,只是因为已经close的客户端没有及时的释放租约导致. 按照Hadoop官网的说法,HDFS会启动一个单独的线程,专门处理未及时释放的租约,自动释放超过"硬超时"(默认1小时)仍未释放的租约,但是从问题的现象上来看,这个线程并没有正常的工作,甚至怀疑这个线程是否没有启动,我使用的是CDH集群,可能与相关的设置有

Sample: Write And Read data from HDFS with java API

HDFS: hadoop distributed file system 它抽象了整个集群的存储资源,可以存放大文件. 文件采用分块存储复制的设计.块的默认大小是64M. 流式数据访问,一次写入(现支持append),多次读取. 不适合的方面: 低延迟的数据访问 解决方案:HBASE 大量的小文件 解决方案:combinefileinputformat ,或直接把小文件合并成sequencefile存储到hdfs. HDFS的块 块是独立的存储单元.但是如果文件小于默认的块大小如64M,它不会占

Java API 读取HDFS的单文件

HDFS上的单文件: -bash-3.2$ hadoop fs -ls /user/pms/ouyangyewei/data/input/combineorder/repeat_rec_category Found 1 items -rw-r--r-- 2 deploy supergroup 520 2014-08-14 17:03 /user/pms/ouyangyewei/data/input/combineorder/repeat_rec_category/repeatRecCategor

HDFS 读取、写入、遍历目录获取文件全路径

1.从HDFS中读取数据 Configuration conf = getConf(); Path path = new Path(pathstr); FileSystem fs = FileSystem.get(conf); FSDataInputStream fsin= fs.open(path ); BufferedReader br =null; String line ; try{ br = new BufferedReader(new InputStreamReader(fsin))

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 or

java调用API操作HDFS

本文介绍Java调用API从hdfs读取数据 package mongodb; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.util.Arrays; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.co