• 012 HDFS API 文件读写代码演示


    一:准备工作

    1.新建class类

      

    2.开启HDFS服务

      

    3.将配置文件拷贝进resources路径

      

      方便了Configuration的读取配置。

    二:读出HDFS文件系统中的文件到控制台

    4.读出在路径中的文件,显示在控制台上

      

    5.分别解析,获取文件系统(两种方式)

      (方式一)

      

      (方式二)

      

      这种方式不需要复制配置文件进resources,但是这种被写死了。

    6.分别解析,写入流

      

    7.优化readFile

      

     三:把文件上传到HDFS上,即为WriteFile

       

      注意点:fileName="user/beifeng/wc.input",加上wc.input

    四:完整源代码

     1 package com.senior.hdfs;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.IOException;
     6 
     7 import org.apache.hadoop.conf.Configuration;
     8 import org.apache.hadoop.fs.FSDataInputStream;
     9 import org.apache.hadoop.fs.FSDataOutputStream;
    10 import org.apache.hadoop.fs.FileSystem;
    11 import org.apache.hadoop.fs.Path;
    12 import org.apache.hadoop.io.IOUtils;
    13 
    14 public class HDFSApp {
    15 
    16     public static FileSystem getFileSystem() throws Exception{
    17         Configuration configuration=new Configuration();
    18         FileSystem fileSystem=FileSystem.get(configuration);
    19         return fileSystem;
    20     }
    21     //read
    22     public static void read() throws Exception{
    23         FileSystem fileSystem=getFileSystem();
    24         String fileName="/user/beifeng/mapreduce/wordcount/input/wc.input";
    25         Path path=new Path(fileName);
    26         FSDataInputStream inStream=fileSystem.open(path);
    27         try{
    28             IOUtils.copyBytes(inStream, System.out, 4096, false);
    29         }catch(Exception e){
    30             e.printStackTrace();
    31         }
    32         
    33     }
    34     //write
    35     public static void write() throws Exception{
    36         FileSystem fileSystem=getFileSystem();
    37         //output fileName
    38         String outputFileName="/opt/datas/wc.input";
    39         //input fileName
    40         String inputFileNmae="/user/beifeng/mapreduce/wordcount/input2/wc.input";
    41         Path path=new Path(inputFileNmae);
    42         FSDataOutputStream outStream=fileSystem.create(path);
    43         FileInputStream inStream=new FileInputStream(new File(outputFileName));
    44         try{
    45             IOUtils.copyBytes(inStream, outStream, 4096, false);
    46         }catch(Exception e){
    47             e.printStackTrace();
    48         }finally{
    49             IOUtils.closeStream(inStream);
    50             IOUtils.closeStream(outStream);
    51         }
    52         
    53     }
    54     public static void main(String[] args) throws Exception {
    55 //        read();
    56         write();
    57 
    58     }
    59 
    60 }
  • 相关阅读:
    WPF开发进阶
    WPF开发进阶
    java 架构好文章
    Logback 输出 JPA SQL日志 到文件
    Linux Bash Shell j简单入门
    java内存空间简述
    PowerDesigner 16.5 反向PostgreSQL9.01 中 Unable to list the columns. SQLSTATE = 22003不良的类型值 short : t 解决方法
    Java代码自动部署
    Oracle优化技巧
    string类型与ASCII byte[]转换
  • 原文地址:https://www.cnblogs.com/juncaoit/p/5912129.html
Copyright © 2020-2023  润新知