使用JavaAPI操作HDFS系统中的文件及文件夹

来源:互联网 发布:python 黑帽子 笔记 编辑:程序博客网 时间:2024/06/05 19:22

1.基本操作

(1)安装eclipse,在终端中进入eclipse安装目录,执行./eclipse命令打开eclipse;或在桌面创建eclipse启动器打开eclipse;

(2)建立一个新的项目:File-new-java project:example

(3)为项目添加hadoop 相关jar包:

           a.右击工程名--bulid path-configure bulid path-libraries-add extemal jars

           b.打开Hadoop安装目录下的share-hadoop文件夹:

                添加common目录下的所有jar包及common/lib 下的所有jar包

                添加hdfs目录下的所有jar包及hdfs/lib 下的所有jar包

               添加mapreduce目录下的所有jar包及mapreduce/lib 下的所有jar包

               添加yarn目录下的所有jar包及yarn/lib 下的所有jar包

(4)新建一个package,例如com.test.org,在这个包里建立新的Java class,以实现所需操作。

(5)导出:右击所要导出的类-export-Java-Java file-jar file(填入所需保存的位置及命名:/home/linux/load.jar)-next-next(点击 browse 添加主类)

(6)执行hadoop jar load.jar (+路径等)(添加主类)

                  Hadoop jar load com.test.org.load (+路径等)(未添加主类)

2.实现建立及删除文件夹

  (1)建立一个文件夹(hadoop fs -mkdir /test/example)

           package com.test.data;

           import java.io.IOException;

           import org.apache.hadoop.conf.Configuration;

           import org.apache.hadoop.fs.FileSystem;

           import org.apache.hadoop.fs.Path;

 

           public class mkdir {

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

                      String str1=args[0];

                      Configuration configuration =new Configuration();

                      FileSystem fileSystem=FileSystem.get(configuration);

                      fileSystem.mkdirs(new Path(str1));

                      }

           }

          

        删除文件夹

           package com.test.data;

           import java.io.IOException;

           import org.apache.hadoop.conf.Configuration;

           import org.apache.hadoop.fs.FileSystem;

           import org.apache.hadoop.fs.Path;

 

           public class delete {

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

                      String str1=args[0];

                      Configuration configuration =new Configuration();

                      FileSystem fileSystem=FileSystem.get(configuration);

                      fileSystem.mkdirs(new Path(str1));

                      }

           }

          

3.上传数据(hadoop fs -put example.txt /example)

           package com.test.data;

           import java.io.BufferedInputStream;

           import java.io.FileInputStream;

           import java.io.IOException;

           import java.io.InputStream;

           import java.io.OutputStream;

           import java.net.URI;

 

           import org.apache.hadoop.conf.Configuration;

           import org.apache.hadoop.fs.FileSystem;

           import org.apache.hadoop.fs.Path;

           import org.apache.hadoop.io.IOUtils;

 

           public class load {

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

                     String str1=args[0];

                     String str2=args[1];

                      InputStream in=new BufferedInputStream(new FileInputStream(str1));

                     Configuration conf=new Configuration();

                      FileSystem fs=FileSystem.get(URI.create(str2), conf);

                      OutputStream out=fs.create(new Path(str2));

                      IOUtils.copyBytes(in, out,4096, true);

           }

           }

           

4.读取数据(hadoop fs -cat /word)

           package com.test.data;

           import java.io.IOException;

           import java.io.InputStream;

           import org.apache.hadoop.conf.Configuration;

           import org.apache.hadoop.fs.FileSystem;

           import org.apache.hadoop.fs.Path;

           import org.apache.hadoop.io.IOUtils;

 

           public class read {

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

                      Stringuri=args[0];

                      Configurationconf=new Configuration();

                      FileSystemfs=FileSystem.get(conf);

                      InputStreamin=null;

                      try {

                                 in=fs.open(new Path(uri));

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

                                 }finally {

                                            IOUtils.closeStream(in);

                                 }

                      }

           }

           
原创粉丝点击