HDFS 读取、写入、遍历文件夹获取文件全路径、append
版权声明:本文为博主原创文章,未经博主同意不得转载。安金龙 的博客。 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<Path> getFilesUnderFolder(FileSystem fs, Path folderPath, String pattern) throws IOException {
  List<Path> paths = new ArrayList<Path>();
  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"));
HDFS 读取、写入、遍历文件夹获取文件全路径、append的更多相关文章
- python文件夹遍历,文件操作,获取文件修改创建时间
		
在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前 ...
 - 通过ftp同步服务器文件:遍历文件夹所有文件(含子文件夹、进度条);简单http同步服务器文件实例
		
该代码主要实现,指定ftp服务地址,遍历下载该地址下所有文件(含子文件夹下文件),并提供进度条显示:另外附带有通过http地址方式获取服务器文件的简单实例 废话不多说,直接上代码: 1.FTPHelp ...
 - C#读取某一文件夹下的所有文件夹和文件
		
static List<string> list = new List<string>();//定义list变量,存放获取到的路径 /// <summary> // ...
 - VBA读取文件夹下所有文件夹及文件内容,并以树形结构展示
		
Const TR_LEVEL_MARK = "+"Const TR_COL_INDEX = "A"Const TR_COL_LEVEL = "E&qu ...
 - 遍历、显示ftp下的文件夹和文件信息
		
今天做了通过ftp读取ftp根目录下的所有文件夹和文件,嵌套文件夹查询,总共用到了一下代码: 1.FtpFile_Directory package com.hs.dts.web.ftp; impor ...
 - FileSizeUtil【获取文件夹或文件的大小】
		
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 获取文件夹或者文件的大小,可以指定单位,也可以自动计算合适的单位值. 效果图 代码分析 常用的方法: getFolderOrFile ...
 - Java访问文件夹中文件的递归遍历代码Demo
		
上代码: import java.io.File; /* * 需求:对指定目录进行所有内容的列出(包含子目录中的内容) * 也可以理解为 深度遍历. */ public class FindAllFi ...
 - java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量
		
package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...
 - day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期
		
复习 ''' 1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集 ...
 
随机推荐
- [转]IIS的各种身份验证详细测试
			
本文转自:http://www.cnblogs.com/chnking/archive/2007/11/20/965553.html#_Toc183326163 一. IIS的身份验证概述 1. ...
 - angularjs 过滤掉textarea输入内容中夹带的特殊字符
			
<body ng-app="app"> <div ng-controller="main"> <textarea ng-model ...
 - WCF 之部署(2010版本之上)
			
首先,在WIN系统下打开IIS,每种操作系统是不同的,请不要弄混. 1.控制面板---左下放的程序---启用或关闭Windows功能,如图: 2.找到Internet Information Serv ...
 - qq iOS环境配置及调用
			
1.下载官方iOS sdk:地址:相关文档 2. 将iOS SDK中的TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拷贝到应用开 ...
 - golang产生guid
			
labix.org/v2/mgo/bson 包虽然是MongoDB的golang实现,其中产生唯一ID的算法是独立的,不依赖MongoDB, 提炼这部分的代码如下: package main im ...
 - 原型链继承中的prototype、__proto__和constructor的关系
			
前不久写了有关原型链中prototype.__proto__和constructor的关系的理解,这篇文章说说在原型链继承中的prototype.__proto__和constructor的关系. 通 ...
 - can't start Git: git.exe
			
can't start Git: git.exe :不能启动Git 这是因为Git的可执行文件的路径不正确,需要手动设置,. 找到设置Git的窗口 然后修改一下路径就行了 点击OK就可以了.
 - c++开源日志log4cplus使用开发文档
			
下载地址:http://files.cnblogs.com/files/lizhigang/LOG4CPLUS%E5%BC%80%E5%8F%91%E4%B8%8E%E4%BD%BF%E7%94%A8 ...
 - Android 录制视频
			
Activity代码: package eoe.demo.Media; import java.io.File; import java.io.IOException; import android. ...
 - AdvStringGrid使用小结
			
结合最近自己做的一些工作,用到了第三方控件AdvStringGrid,这里就常用的一些技巧做个小小的总结 (1)如何设置表格固定的列数,如下图所示: 这里固定的列数为3列,通过设置下面属性来改变固定的 ...