mapreduce
This commit is contained in:
		| @@ -0,0 +1,180 @@ | ||||
| package com.heibaiying.utils; | ||||
|  | ||||
| import org.apache.hadoop.conf.Configuration; | ||||
| import org.apache.hadoop.fs.*; | ||||
|  | ||||
| import java.io.BufferedReader; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.InputStreamReader; | ||||
| import java.net.URI; | ||||
| import java.net.URISyntaxException; | ||||
|  | ||||
| /** | ||||
|  * HDFS 工具类 | ||||
|  */ | ||||
| public class HdfsUtils { | ||||
|  | ||||
|  | ||||
|     private static final String HDFS_PATH = "hdfs://192.168.0.107:8020"; | ||||
|     private static final String HDFS_USER = "root"; | ||||
|     private static FileSystem fileSystem; | ||||
|  | ||||
|     static { | ||||
|  | ||||
|         try { | ||||
|             Configuration configuration = new Configuration(); | ||||
|             configuration.set("dfs.replication", "1"); | ||||
|             fileSystem = FileSystem.get(new URI(HDFS_PATH), configuration, HDFS_USER); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         } catch (InterruptedException e) { | ||||
|             e.printStackTrace(); | ||||
|         } catch (URISyntaxException e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
|     public static FileSystem getFileSystem() { | ||||
|         return fileSystem; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 创建目录 支持递归创建 | ||||
|      * | ||||
|      * @param path 路径地址 | ||||
|      * @return 创建是否成功 | ||||
|      */ | ||||
|     public static boolean mkdir(String path) throws Exception { | ||||
|         return fileSystem.mkdirs(new Path(path)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查看文件内容 | ||||
|      * | ||||
|      * @param path 路径地址 | ||||
|      * @return 返回文件内容字符串 | ||||
|      */ | ||||
|     public static String text(String path, String encode) throws Exception { | ||||
|         FSDataInputStream inputStream = fileSystem.open(new Path(path)); | ||||
|         return inputStreamToString(inputStream, encode); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 创建文件并写入内容 | ||||
|      * | ||||
|      * @param path 路径地址 | ||||
|      * @param context    文件内容 | ||||
|      */ | ||||
|     public void createAndWrite(String path, String context) throws Exception { | ||||
|         FSDataOutputStream out = fileSystem.create(new Path(path)); | ||||
|         out.writeUTF(context); | ||||
|         out.flush(); | ||||
|         out.close(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 文件重命名 | ||||
|      * | ||||
|      * @param oldPath 旧文件路径 | ||||
|      * @param newPath 新文件路径 | ||||
|      * @return 重命名是否成功 | ||||
|      */ | ||||
|     public boolean rename(String oldPath, String newPath) throws Exception { | ||||
|         return fileSystem.rename(new Path(oldPath), new Path(newPath)); | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 拷贝文件到HDFS | ||||
|      * | ||||
|      * @param localPath 本地文件路径 | ||||
|      * @param hdfsPath  存储到hdfs上的路径 | ||||
|      */ | ||||
|     public void copyFromLocalFile(String localPath, String hdfsPath) throws Exception { | ||||
|         fileSystem.copyFromLocalFile(new Path(localPath), new Path(hdfsPath)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 从HDFS下载文件 | ||||
|      * | ||||
|      * @param hdfsPath  文件在hdfs上的路径 | ||||
|      * @param localPath 存储到本地的路径 | ||||
|      */ | ||||
|     public void copyToLocalFile(String hdfsPath, String localPath) throws Exception { | ||||
|         fileSystem.copyToLocalFile(new Path(hdfsPath), new Path(localPath)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 查询给定路径中文件/目录的状态 | ||||
|      * | ||||
|      * @param path 目录路径 | ||||
|      * @return 文件信息的数组 | ||||
|      */ | ||||
|     public FileStatus[] listFiles(String path) throws Exception { | ||||
|         return fileSystem.listStatus(new Path(path)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 查询给定路径中文件的状态和块位置 | ||||
|      * | ||||
|      * @param path 路径可以是目录路径也可以是文件路径 | ||||
|      * @return 文件信息的数组 | ||||
|      */ | ||||
|     public RemoteIterator<LocatedFileStatus> listFilesRecursive(String path, boolean recursive) throws Exception { | ||||
|         return fileSystem.listFiles(new Path(path), recursive); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 查看文件块信息 | ||||
|      * | ||||
|      * @param path 文件路径 | ||||
|      * @return 块信息数组 | ||||
|      */ | ||||
|     public BlockLocation[] getFileBlockLocations(String path) throws Exception { | ||||
|         FileStatus fileStatus = fileSystem.getFileStatus(new Path(path)); | ||||
|         return fileSystem.getFileBlockLocations(fileStatus, 0, fileStatus.getLen()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除文件 | ||||
|      * | ||||
|      * @param path 文件路径 | ||||
|      * @return 删除是否成功 | ||||
|      */ | ||||
|     public boolean delete(String path) throws Exception { | ||||
|         return fileSystem.delete(new Path(path), true); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 把输入流转换为指定字符 | ||||
|      * | ||||
|      * @param inputStream 输入流 | ||||
|      * @param encode      指定编码类型 | ||||
|      */ | ||||
|     private static String inputStreamToString(InputStream inputStream, String encode) { | ||||
|         try { | ||||
|             if (encode == null || ("".equals(encode))) { | ||||
|                 encode = "utf-8"; | ||||
|             } | ||||
|             BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, encode)); | ||||
|             StringBuilder builder = new StringBuilder(); | ||||
|             String str = ""; | ||||
|             while ((str = reader.readLine()) != null) { | ||||
|                 builder.append(str).append("\n"); | ||||
|             } | ||||
|             return builder.toString(); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user