博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDFS 读取、写入、遍历文件夹获取文件全路径、append
阅读量:5115 次
发布时间:2019-06-13

本文共 2659 字,大约阅读时间需要 8 分钟。

版权声明:本文为博主原创文章,未经博主同意不得转载。安金龙 的博客。 https://blog.csdn.net/smile0198/article/details/37573081

1、从HDFS中读取数据

Configuration conf = getConf();  Path path = new Path(pathstr);   FileSystem fs = FileSystem.get(conf);   FSDataInputStream fsin= fs.open(path );    BufferedReader br =null;   String line ;   try{    br = new BufferedReader(new InputStreamReader(fsin));       while ((line = br.readLine()) != null) {         System.out.println(line);        }    }finally{    br.close();   }

2、写HDFS

Configuration conf = getConf();  Path path = new Path(mid_sort);   FileSystem fs = FileSystem.get(conf);   FSDataOutputStream out = fs.create(resultpath);  out.write(sb.toString().getBytes());  out.close();

3、遍历文件夹 获取文件 全路径

/**  * 得到一个文件夹(不包含子文件夹)下的全部名字匹配上pattern的文件名称  * @param fs  * @param folderPath  * @param pattern 用于匹配文件名称的正则  * @return  * @throws IOException  */ public static List
getFilesUnderFolder(FileSystem fs, Path folderPath, String pattern) throws IOException { List
paths = new ArrayList
(); if (fs.exists(folderPath)) { FileStatus[] fileStatus = fs.listStatus(folderPath); for (int i = 0; i < fileStatus.length; i++) { FileStatus fileStatu = fileStatus[i]; if (!fileStatu.isDir()) {//仅仅要文件 Path oneFilePath = fileStatu.getPath(); if (pattern == null) { paths.add(oneFilePath); } else { if (oneFilePath.getName().contains(pattern)) { paths.add(oneFilePath); } } } } } return paths; }

4、追加数据 append

public static boolean appendRTData(String hdfsFile, String appendFile) {    boolean flag = false;    Configuration conf = new Configuration();    FileSystem fs = null;    try {      fs = FileSystem.get(URI.create(hdfsFile), conf);      InputStream in = new BufferedInputStream(new FileInputStream(appendFile));      OutputStream out = fs.append(new Path(hdfsFile));      IOUtils.copyBytes(in, out, 4096, true);    } catch (IOException e) {      e.printStackTrace();    }    return flag;  }

***********************************************************************************************************************************************

***********************************************************************************************************************************************

异常信息

1、Exception in thread "main" java.lang.IllegalArgumentException: java.net.UnknownHostException: ns6

原因是没有载入hdfs的配置信息,须要加入以下的代码:

conf.addResource(new Path("/xxxx/hdfs-site.xml"));//path是配置文件地址
假设配置了环境变量能够在不同的机器上使用:

conf.addResource(new Path(System.getenv("HADOOP_CONF") + "/hdfs-site.xml"));

转载于:https://www.cnblogs.com/mqxnongmin/p/10686142.html

你可能感兴趣的文章
P1262 间谍网络 (tarjan缩点 水过去)
查看>>
Java调用存储过程返回数组
查看>>
URL和URI区别
查看>>
A*算法
查看>>
always中的敏感变量
查看>>
linux文件IO的操作
查看>>
CodeForces 521D nice贪心
查看>>
【Head First Java 读书笔记】(四)对象的行为
查看>>
第二次冲刺阶段第三天
查看>>
static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
查看>>
velocity 教程
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
Chrome development tools学习笔记(3)
查看>>
软件过程的守护神
查看>>
SIFT特征提取分析
查看>>
NAT配置
查看>>
【翻译】Brewer's CAP Theorem CAP定理
查看>>
undefined与null
查看>>