* 获取某个目录的大小(单位b字节),注意:只能在driver端使用,可以多线程来提速。
def get_path_size(spark: SparkSession, path: String): Long = {
//取文件系统
val filePath = new org.apache.hadoop.fs.Path( path )
val fileSystem = filePath.getFileSystem( spark.sparkContext.hadoopConfiguration )
// 获取该目录的大小,单位是字节
if (fileSystem.exists( filePath )) {
fileSystem.getContentSummary( filePath ).getLength
} else {
1 获取路径或目录大小/** * 获取某个目录的大小(单位b字节),注意:只能在driver端使用,可以多线程来提速。 */def get_path_size(spark: SparkSession, path: String): Long = { //取文件系统 val filePath = new org.apache.hadoop.fs.Path( path ) val fileSystem = filePath.getFileSystem( spark.sparkContex
val listBuffer = new ListBuffer[Future[String]]
val service: ExecutorService = Executors.newFixedThreadPool(4)
for (i <- 0 to 3) {
val task: Future[String] = service.submit(new Callable[String] {
override def call(): String = {
在日常业务中,
spark
常见的就是通过
路径
通配符*,{}等方式一次读取多个文件,一次批处理将这些文件做一个大job写入Hive或者ODPS,笔者最近在用
Spark
读取Hudi的文件时候发现了一个诡异的文件丢失Bug:
一次读入所有文件夹会有部分文件夹丢失,一开始怀疑是这部分文件夹本身有损坏,但是用
spark
单独读取该文件夹的时候发现数据又不会丢失.
既然一次job会丢数据,那么不妨按文件夹拆分job,每个job执行单个任务,常见就是for循环去遍历所有文件夹挨个执行,但是效率过低需要
六个小时,在资源
在数据仓库建设中,元数据管理是非常重要的环节之一。根据Kimball的数据仓库理论,可以将元数据分为这三类:
技术元数据,如表的存储结构结构、文件的
路径
业务元数据,如血缘关系、业务的归属
过程元数据,如表每天的行数、占用HDFS空间、更新时间
而基于这3类元数据"搭建"起来的元数据系统,通常又会实现如下核心功能:
1. 血缘关系
如表级别/字段级别的血缘关系,这些主要体现在我们日常的SQL和ETL任务里。
2. 大数据集群计算资源管理
针对利用不同的计算引擎如
Spark
/Flink/Mapreduce,.
Spark
一次性读取指定
目录
下的所有子
目录
(嵌套)下的所有文件(py
spark
语言为例子)
sc =
spark
.
spark
Context
rdd = sc.textFile("/file/*/part-*")
当前
目录
:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdvK2g4M-1644562997368)(C:\Users\guokai02\AppData\Roaming\Typora\typora-user-images\image-2022021115
文章
目录
一些配置和前提说明hadoop的一些说明代码的一些说明pom.xml
获取
行数使用FileSystem
获取
文件行数使用
spark
获取
hdfs 文件的条数
获取
大小
第一种解决办法:使用getBytes()第二种解决办法:使用listStatus()简单的情况比较麻烦的情况第三种解决办法:使用getContentSummary()额外说点hadoop fs -dus
旁边的实习生又一脸懵逼了:
Spark
有bug,明明我本地/data
目录
下有test.txt文件,但运行就报错:
Caused by: java.io.FileNotFoundException: File file:/data/test.txt does not exist
我一看,原来小伙子使用
spark
集群模式来读取仅仅在他自己的客户端存放的一个文本文件
如何读取本地文件
Spark
...
2.hdfs dfs -ls -h
也可以查看文件
大小
但是当子文件
目录
过多时 统计的
大小
为0
3.命令 hdfs dfs -du -s -h /user/hive/warehouse/
结果 97.1 G 291.3 G /user/hive/warehouse
第一列标示该
目录
下总文件
大小
第二列标示该
目录
下所有文件在集群上的总存储
大小
和你的副本数相关,我的副本数是3 ,所以第二列的