hdfs 列出文件
package com.lala.lala.pipe.dbinfo
import java.io.{ByteArrayOutputStream, PrintWriter}
import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.serializer.SerializerFeature
import com.lala.lala.common.query.option.HDFSOptions
import com.lala.lala.common.visual.hdfs.{HdfsFile, HdfsFileStatusWrapper}
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.security.AccessControlException
import org.apache.spark.sql.SparkSession
class HdfsShow(spark: SparkSession, map: Map[String, String]) {
private val sc = spark.sparkContext
def getSampleData: String = {
val path = map(HDFSOptions.PATH)
sc.textFile(path).take(DBShow.Num).mkString("\n")
}
def listFiles(): String = {
val pathStr = map.getOrElse(HDFSOptions.PATH, "/")
val path = new Path(pathStr)
val hdfs = HdfsShow.getHdfs(spark)
val baos = new ByteArrayOutputStream()
val pw = new PrintWriter(baos)
val lf = new HdfsFileStatusWrapper
val arr = try {
val liststatus = hdfs.listStatus(path)
Some(liststatus)
} catch {
case ex: AccessControlException => ex.printStackTrace(pw); lf.setPermissionDenied(true); None
case ex => ex.printStackTrace(pw); None
} finally {
if (pw != null) {
pw.flush()
pw.close()
}
}
lf.setPath(pathStr)
if (arr.isDefined) {
lf.setSuccess(true)
val hfarr = for (filestatus <- arr.get) yield {
val pathx = filestatus.getPath
new HdfsFile(pathx.getName, s"${pathx.getParent}/${pathx.getName}", filestatus.isDirectory, filestatus.isFile)
}
import collection.JavaConverters._
lf.setFileList(hfarr.toSeq.asJava)
}
lf.setMsg(baos.toString)
JSON.toJSONString(lf, SerializerFeature.WriteNullListAsEmpty)
}
}
object HdfsShow {
private var hdfs: FileSystem = null
def getHdfs(spark: SparkSession) = {
if (hdfs == null) {
val hadoopConf = spark.sparkContext.hadoopConfiguration
hdfs = org.apache.hadoop.fs.FileSystem.get(hadoopConf)
}
hdfs
}
}
hdfs 列出文件的更多相关文章
- 使用oracle的大数据工具ODCH访问HDFS数据文件
软件下载 Oracle Big Data Connectors:ODCH 下载地址: http://www.oracle.com/technetwork/bdc/big-data-connectors ...
- (转)distcp从ftp到hdfs拷贝文件
link :http://blog.csdn.net/sptoor/article/details/11523469 distcp从ftp到hdfs拷贝文件: hadoop distcp ftp:// ...
- Spark中加载本地(或者hdfs)文件以及SparkContext实例的textFile使用
默认是从hdfs读取文件,也可以指定sc.textFile("路径").在路径前面加上hdfs://表示从hdfs文件系统上读 本地文件读取 sc.textFile("路 ...
- HDFS的Java客户端操作代码(HDFS删除文件或目录)
1.HDFS删除文件或目录 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache.hadoo ...
- Hadoop HDFS分布式文件系统设计要点与架构
Hadoop HDFS分布式文件系统设计要点与架构 Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群 ...
- 分享非常有用的Java程序 (关键代码) (二)---列出文件和目录
原文:分享非常有用的Java程序 (关键代码) (二)---列出文件和目录 File dir = new File("directoryName"); String[] child ...
- hadoop 提高hdfs删文件效率----hadoop删除文件流程解析
前言 这段时间在用hdfs,由于要处理的文件比较多,要及时产出旧文件,但是发现hdfs的blocks数一直在上涨,经分析是hdfs写入的速度较快,而block回收较慢,所以分心了一下hadoop删文件 ...
- HDFS中文件的压缩与解压
HDFS中文件的压缩与解压 文件的压缩有两大好处:1.可以减少存储文件所需要的磁盘空间:2.可以加速数据在网络和磁盘上的传输.尤其是在处理大数据时,这两大好处是相当重要的. 下面是一个使用gzip工具 ...
- 利用JavaAPI访问HDFS的文件
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
随机推荐
- 【目标检测】关于如何在 PyTorch1.x + Cuda10 + Ubuntu18.0 运行 CenterNet 源码
这几天一直在尝试运行CenterNet的源码,但是出现各种问题,本已经打算放弃,中午吃完饭又不甘心,打算重新安装环境再来一遍,没想到竟然成功了.所以,坚持下去,黑夜过后便是黎明. 注意:gcc/g++ ...
- WPF-控件模板
说起控件模板,还是因为在一次需求实现中,我碰到了一个圆形按钮.一开始我认知的按钮是方形灰不拉几的一个块儿.这如何实现一个圆形按钮? 我最先想到的是使用样式,可是发现根本就没有改变Button形状的属性 ...
- 打开centos7图形化窗口
1. yum groupinstall "X Window System" 2. export DISPLAY=172.16.4.240:0.0 3. yum -y install ...
- Python - 面向对象 - 第二十天
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过 ...
- C 补充
a++与++a的区别 #include <stdio.h> void main(){ int a=5,b=5; int i=0; for(i=0;i<2;i++){ printf(& ...
- springmvc在使用@ModelAttribute注解获取Request和Response会产生线程并发不安全问题(转)
springmvc在获取Request和Response有很多方式:具体请看:https://www.cnblogs.com/wade-luffy/p/8867144.html 产生线程问题的代码如下 ...
- flink 批量梯度下降算法线性回归参数求解(Linear Regression with BGD(batch gradient descent) )
1.线性回归 假设线性函数如下: 假设我们有10个样本x1,y1),(x2,y2).....(x10,y10),求解目标就是根据多个样本求解theta0和theta1的最优值. 什么样的θ最好的呢?最 ...
- python处理孤立的异常点
假设有一个列表,a = [61, 40, 70, 80, 86, 50, 88, 33, 76, 64],保存的是设备的状态值随时间的变化,超过60即为异常,但是对于孤立的异常点,我们需要将其忽略,只 ...
- Centos7安装宝塔控制面板
目录 宝塔面板安装和使用图文教程 1,通过ssh工具登录服务器 2,安装宝塔面板 2,登录宝塔面板 3,设置宝塔面板 3.1,首先我们进入面板设置 3.2,更改面板端口 3.3,绑定域名 3.4,绑定 ...
- STM32F4 串口IAP程序要点
1. IAP(bootloader)程序 1.1 内部Flash地址分配 /* Start of the Flash address */ #define STM32_FLASH_BASE 0x080 ...