欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

获取 hdfs 文件详细信息(创建时间等)

最编程 2024-04-21 22:34:13
...

获取hdfs文件的详细信息(创建时间等)

时间:2021-07-13
本文章向大家介绍获取hdfs文件的详细信息(创建时间等),主要包括获取hdfs文件的详细信息(创建时间等)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#!/bin/sh

feature_data_path='hdfs://xx/xy/xx/test_day_v2'
my_data_path='hdfs://xx/xy/xx/liukai_copy_test_day_v2'
today=`date +%Y%m%d`#显示当前日期  20201216
hour=`date +%H` #显示当前小时  8

echo "para today:$today hour:$hour"
#today:20201216   hour:hour

echo " ${feature_data_path}/${today}"
#hdfs://xx/xy/xx/test_day_v2/20201216

detail=$(hdfs dfs -ls ${feature_data_path}/${today}/_SUCCESS)#显示 {feature_data_path}/${today}的生成时间等信息
#-rw-rw----+  3 username 用户权限     0 2020-12-16 10:32    hdfs://xx/xy/xx/test_day_v2/20201216
"
参考资料:https://www.cnblogs.com/kongzhongqijing/p/3488884.html
1,第一个栏位代表文件的属性,第一个栏位可以填充10个字母,
    1.1第一个字母代表文件类型 ”-”,普通文件. ”d”目录,字母”d”,是dirtectory(目录)的缩写.

    1.2紧接着的3*3个字符分3组,各指示此文件的读、写、执行权限,对于owner、group、others而言。
     因为Linux是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,
     其文件的权限位置排列顺序是(以-rwxr-xr-x为例):rwx(Owner)r-x(Group)r-x(Other)
     这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。
2,第二个栏位表示文件个数。如果是文件的话,那这个数目自然是1了,如果是目录的话,那它的数目就是该目录中的文件个数了。

3,第三个栏位表示该文件或目录的拥有者。若使用者目前处于自己的Home,那这一栏大概都是它的账号名称。

4,第四个栏位,表示所属的组(group)。每一个使用者都可以拥有一个以上的组,不过大部分的使用者应该都只属于一个组,只有当系统管理员希望给予某使用者特殊权限时,才可能会给他另一个组。

5,第五栏位,表示文件大小。文件大小用byte来表示,而空目录一般都是1024byte,当然可以用其它参数使文件显示的单位不同,如使用ls –k就是用kb莱显示一个文件的大小单位,不过一般我们还是以byte为主。

6,表示最后一次修改时间。以“月,日,时间”的格式表示,如Aug 15 5:46表示8月15日早上5:46分

7,表示文件名
"
time=$(hdfs dfs -ls ${feature_data_path}/${today}/_SUCCESS|awk -F" " '{print $7}'| awk -F":" '{print $1"_"$2}')
"
-rw-rw----+  3 username 用户权限     0 2020-12-16 10:32    hdfs://xx/xy/xx/test_day_v2/20201216/_SUCCESS

1,awk -F" " '{print $7}'

空格分隔,取第7个   10:32

2,| awk -F":" '{print $1"_"$2}
:分隔,取第一个和第二个用_连接  10_32

""
echo "detal:$detail hour:$hour time:$time"
echo "copy test data into $my_data_path"

hadoop fs -test -e ${my_data_path}/${today}/${time}

"
hadoop fs -test -e /hdfs_dir
if [ $? -ne 0 ]; then
    echo "Directory not exists!"
fi
hadoop fs -test -e 用于判断HDFS目录/文件是否存在,下一步检测该命令的返回值,以确定其判断结果。

$?表示上一条命令返回值,$0表示第一个参数,-ne表示不等于  -eq 等于
0存在  1不存在
"

if [ $? -ne 0 ]; then
    echo "Directory not exists!"
    hadoop fs -mkdir -p ${my_data_path}/${today}/${time}
    echo "${my_data_path}/${today}/${time} was made!!"
    echo " begin copy"
    hadoop fs -cp ${feature_data_path}/${today}  ${my_data_path}/${today}/${time}
    echo "end copy"
    else
    echo "${my_data_path}/${today}/${time}  exists!"
fi

原文地址:https://www.cnblogs.com/kai-xuan/p/15008207.html

推荐阅读