zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Java面向对象XMind
    使用idea插件JRebel热部署的坑
    Mysql小技巧(多行数据合并+模糊查询
    JRebel安装使用
    Shiro(三) 权限管理 假数据
    Shiro(二)通过shiro实现登录 连接数据库+集成Springboot
    Shiro(一)通过shiro实现登录
    poi实现Excel输出
    日志,注解切入点
    获取用户信息
  • 原文地址:https://www.cnblogs.com/juncaoit/p/5912129.html
Copyright © 2011-2022 走看看