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 }
  • 相关阅读:
    django QuerySet对象转换成字典对象
    HTTP请求中三种参数类型
    django开发中遇到的问题
    win7下mysql8.0.12解压缩版安装
    Django小部件
    程序员上班有什么提高效率的技巧?
    Android应用AsyncTask处理机制详解及源码分析
    Android常用工具类
    Android Volley解析
    Android 开发有哪些新技术出现?
  • 原文地址:https://www.cnblogs.com/juncaoit/p/5912129.html
Copyright © 2011-2022 走看看