1.将一个tar包解压 2.读取里面所有日期的文件夹(即上周六到本周五的日期)下的数据文件 3.合并所以日期下的数据文件,与tar包中OK文件里面的个数比较 4.如果数据量正常,则对所有把日期文件夹内的数据文件进行分流,大于10M的数据文件直接上传到hdfs,小于则上传到Hbase

以下是一个使用Shell脚本实现上述步骤的示例:

#!/bin/bash

# 解压tar包
tar -xf your_tar_file.tar.gz

# 获取上周六到本周五的日期范围
start_date=$(date -d "last Saturday" "+%Y-%m-%d")
end_date=$(date -d "this Friday" "+%Y-%m-%d")

# 合并所有日期下的数据文件
merged_file="merged_data.txt"
for folder in your_tar_file/*/; do
    folder_date=$(basename "$folder")

    # 检查文件夹日期是否在指定范围内
    if [[ "$folder_date" > "$start_date" && "$folder_date" < "$end_date" ]]; then
        cat "$folder"/*.txt >> "$merged_file"
    fi
done

# 读取OK文件中的个数
ok_file_count=$(grep -c "" your_tar_file/OK)

# 检查数据量是否正常
merged_file_count=$(grep -c "" "$merged_file")
if [ "$ok_file_count" -eq "$merged_file_count" ]; then
    # 分流数据文件
    for file in your_tar_file/*/*.txt; do
        file_size=$(stat -c%s "$file")

        # 判断文件大小
        if [ "$file_size" -gt 10485760 ]; then
            # 大于10M,上传到HDFS
            hdfs dfs -put "$file" /path/on/hdfs/
        else
            # 小于等于10M,上传到HBase
            hbase put your_hbase_table "$file" column_family:data "$file"
        fi
    done
else
    echo "数据量异常!"
fi

请注意,上述示例假设您的tar包已经存在,并且其中的数据文件夹和OK文件都位于your_tar_file目录下。您需要将your_tar_file.tar.gz替换为您的tar包的实际路径,并根据实际情况修改文件路径、HDFS路径和HBase相关的命令。

在此示例中,我们使用日期范围条件筛选出符合要求的文件夹,并将它们下的数据文件合并到一个文件中。然后,我们读取OK文件中的行数(即文件个数),并检查合并后的数据文件中的行数是否与OK文件中的行数相同。如果相同,则对所有数据文件进行分流,大于10M的文件上传到HDFS,小于等于10M的文件上传到HBase。如果数据量异常,则输出相应提示。

请根据您的具体需求和环境进行适当调整。

希望对您有所帮助!如果您还有其他问题,请随时提问。