计算hdfs指定目录中所有文件名中包含2011-04-24的文件大小,并换算成GB: 
$HADOOP_HOME/bin/hadoop fs -du /user/hdfs/s3/ifocus/*2011-04-24*  |awk '{sum += $1}END{print sum}'  |awk '{total=$1;base=1024*1024*1024;print total/base}'  
  如果要统计20号到24号所有文件大小的总和呢?
#!/bin/bash 

DIR=/log/tmp/cd 
 
startdate="$1"
date1=$(date -d "$1" "+%s")
date2=$(date -d "$2" "+%s")
date_count=$(echo "$date2 - $date1"|bc)
day_m=$(echo "$date_count"/86400|bc)
 
for ((sdate=0;sdate<"$day_m";sdate++))
do
DAY=$(date -d "$startdate $sdate days" "+%F")
   Size=$(~/hadoop-0.20.2-CDH3B4/bin/hadoop fs -du ${DIR}/*${DAY}* |awk '{sum += $1}END{printf "%u",sum}') 
   let a=${a}+${Size} 
done 
 
echo $a |awk '{total=$1;base=1024*1024*1024;print total/base}' 
   脚本比较简单,但由于shell不支持浮点数运算,搞了很久,才想起使用printf "%u"来指定用十进制表示文件大小,这才顺利完成脚本。计算的时候,指定起始日期,20110420,20110424。
  另外一个问题:最后那条shell语句是如何取得for循环中的变量$a的?Shell脚本里,要使用local关键字来标识局部变量;否则,变量默认为全局的,一直到脚本结束,当然前提是没有被后面的值覆盖。
  所以,在循环体外面引用循环体里面的变量是完全可以的。

直接在数据源上用正则表达式即可,
$HADOOP_HOME/bin/hadoop fs -du /user/hdfs/s3/ifocus/*2011-04-2[0-4]*  |awk '{sum += $1}END{print sum}'  |awk '{total=$1;base=1024*1024*1024;print total/base}'

awk算术运算一例:统计hdfs上某段时间内的文件大小的更多相关文章

  1. 统计HDFS 上字节数据统计

    class HDFSWordCount { def main (args: Array[String]) { if (args.length > 0){ for (line <- Sour ...

  2. HBase 在HDFS 上的目录树

         总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 这里只介绍系统级别的目录树. 一.0.94-cdh4.2.1版本 系 ...

  3. shell脚本监控Flume输出到HDFS上文件合法性

    在使用flume中发现由于网络.HDFS等其它原因,使得经过Flume收集到HDFS上得日志有一些异常,表现为: 1.有未关闭的文件:以tmp(默认)结尾的文件.加入存到HDFS上得文件应该是gz压缩 ...

  4. HBase在HDFS上的目录介绍

    总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 第一,介绍系统级别的目录树. 一.0.94-cdh4.2.1版本 系统级别的一 ...

  5. HBase在HDFS上的目录树

    众所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 这里只介绍系统级别的目录树: 一.0.94-cdh4.2.1版本 系统级别的一 ...

  6. eclipse通过maven进行打包并且对hdfs上的文件进行wordcount

    在eclipse中配置自己的maven仓库 1.安装maven(用于管理仓库,jar包的管理) -1.解压maven安装包 -2.把maven添加到环境变量/etc/profile -3.添加mave ...

  7. hadoop 将HDFS上多个小文件合并到SequenceFile里

    背景:hdfs上的文件最好和hdfs的块大小的N倍.如果文件太小,浪费namnode的元数据存储空间以及内存,如果文件分块不合理也会影响mapreduce中map的效率. 本例中将小文件的文件名作为k ...

  8. Hadoop_常用命令(hdfs上)

    Hadoop_常用命令(hdfs上) hadoop fs所有文件系统都可以使用 hdfs dfs仅针对于hdfs文件系统 - 1 - 查看所有目录(文件夹)及文件  hdfs dfs -ls / - ...

  9. 提效工具-python解析xmind文件及xmind用例统计

    现状 每个公司都有一个维护测试case的系统,有自研的也有买的,比如QC, 禅道等等,QA往往习惯使用xmind等思维导图工具来编写测试用例,因为思路清晰,编写方便,那么这就有一个问题,大多公司要求所 ...

随机推荐

  1. fork与vfork区别

    1. 地址空间各段拷贝: fork: 内核为子进程生成新的地址空间结构,拷贝父进程的代码段,数据空间,堆,栈到自身的地址空间,但注意:子进程的代码段并不会分配物理空间,而是指向父进程的代码段物理空间, ...

  2. 【bzoj3223】文艺平衡树

    #include<bits/stdc++.h> #define N 300005 #define rat 4 using namespace std; struct Node{ int s ...

  3. Tensorflow项目实战一:MNIST手写数字识别

    此模型中,输入是28*28*1的图片,经过两个卷积层(卷积+池化)层之后,尺寸变为7*7*64,将最后一个卷积层展成一个以为向量,然后接两个全连接层,第一个全连接层加一个dropout,最后一个全连接 ...

  4. Asp.net 模板下载和导入到DataTable中

    HTML页面: <tr> <td colspan=" style="text-align: left; border: 1px;"> <as ...

  5. redis之(一)redis的简单介绍

    [一]:概念 --->Redis是一个开源的,高性能的,基于键值对的缓存与存储系统 --->Redis数据库中的多有数据都存储在内存中,由于内存的读写速度远快于硬盘,一秒读写超过10万键值 ...

  6. Efficient Graph-Based Image Segmentation

    转:http://blog.csdn.net/asongoficeandfire/article/details/8434799 Efficient Graph-Based Image Segment ...

  7. Matlab处理数据导出Paraview可读的vtk文件(二)

    由于我在用SPH方法仿真时用的是FORTRAN语言,并且没有找到直接输出vtk文件的代码,因此偷懒通过MATLAB转换一下数据. 用到的Matlab子程序可通过一下链接找到. Matlab处理数据导出 ...

  8. 手动安装gcc 4.8.5

    # 下载gcc wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz # 解压并进入目录 tar -zxvf gcc-.tar.gz cd ...

  9. Delphi获取毫秒级时间戳

    function GetJavaTime( d: TDateTime ): Int64; var dJavaStart: TDateTime; begin //java里的时间是从1970年1月1日0 ...

  10. 探索sklearn | 鸢尾花数据集

    1 鸢尾花数据集背景 鸢尾花数据集是原则20世纪30年代的经典数据集.它是用统计进行分类的鼻祖. sklearn包不仅囊括很多机器学习的算法,也自带了许多经典的数据集,鸢尾花数据集就是其中之一. 导入 ...