hadoop fs -stat命令 d
当向HDFS上写文件时,可以通过设置dfs.block.size配置项来设置文件的block size,
这导致HDFS上不同文件的block size是不同的。有时候我们需要知道HDFS上某个文件的block size,
比如想知道该该文件作为job的输入会创建几个map等。
Hadoop FS Shell提供了一个-stat选项可以达到目的。
官方文档描述这个选项时遗漏了可选参数。
-stat选项的使用格式是:

  1. {HADOOP_HOME}/bin/Hadoop fs –stat [format]
  2. 其中可选的format被官方文档遗漏了。下面列出了format的形式:
  • %b:打印文件大小(目录为0)
  • %n:打印文件名
  • %o:打印block size (我们要的值)
  • %r:打印备份数
  • %y:打印UTC日期 yyyy-MM-dd HH:mm:ss
  • %Y:打印自1970年1月1日以来的UTC微秒数
  • %F:目录打印directory, 文件打印regular file
  1. 当使用-stat选项但不指定format时候,只打印文件创建日期,相当于%y:
  2. bin/hadoop fs -stat /liangly/teradata/part-00099
    2010-11-02 08:03:49
  3. 下面的例子打印文件的block size和备份个数:
    bin/hadoop fs -stat “%o %r” /liangly/teradata/part-00099
    67108864 3
    从打印结果可以看到文件/liangly/teradata/part-00099的block size是64m,有3个备份。

数据操作命令:

1
2
3
4
export KRB5CCNAME=/tmp/krb5cc_hive
hdfs dfs -ls /user/hive/warehouse/galaxy_result.db/r_i5_galaxy_bw_flowkernel_all/ptime=20181201000000
hdfs dfs -get /user/hive/warehouse/galaxy_result.db/r_i5_galaxy_bw_flowkernel_all/ptime=20181201000000/* ./
hdfs dfs -put 7f496fcbfd32399e-1424b2e30000000a_735678970_data.0.parq /user/hive/warehouse/galaxy_result.db/r_i5_galaxy_bw_flowkernel_all/ptime=20181201000000/