将本地不同日期文件夹下的不同系统文件夹下多个txt数据文件上传,将多个大于10M的大文件写入HDFS路径,并展示上传个数 将多个小于10M的数据上传到hbase上,并展示上传个数,用shell方式

下面是一个使用 Shell 脚本将本地不同日期文件夹下的不同系统文件夹下的多个 txt 数据文件上传至 HDFS,并统计上传个数的示例:

#!/bin/bash

# 假设日期文件夹的父目录为 /path/to/date_folder
date_folder_parent="/path/to/date_folder"

# 假设 HDFS 路径为 /hdfs/path/
hdfs_path="/hdfs/path/"

# 大文件阈值,单位为字节
large_file_threshold=$((10*1024*1024))  # 10M

# 计数器
large_file_counter=0
small_file_counter=0

# 遍历日期文件夹
for date_folder in "${date_folder_parent}/"*/; do
    # 遍历系统文件夹
    for system_folder in "${date_folder}"*/; do
        # 遍历 txt 文件
        for file in "${system_folder}"*.txt; do
            # 获取文件大小
            file_size=$(stat -c%s "$file")
            
            # 文件大小超过阈值,上传到 HDFS
            if (( file_size > large_file_threshold )); then
                hdfs dfs -put "$file" "${hdfs_path}${date_folder: -11}${system_folder##*/}_$(basename "$file")"
                ((large_file_counter++))
            else
                # 文件大小小于等于阈值,上传到 HBase
                # 假设使用 hbase put 命令将数据插入 HBase 表,具体命令需要根据您的 HBase 配置和表结构来定制
                hbase put 'your_table' "$file" rowkey column_family:column
                ((small_file_counter++))
            fi
        done
    done
done

# 输出统计结果
echo "大文件上传个数:$large_file_counter"
echo "小文件上传个数:$small_file_counter"

在上述示例中,您需要将 /path/to/date_folder 替换为实际的日期文件夹的父目录路径。同时,根据实际需要,调整 hdfs_pathhbase put 命令中的参数。

脚本将遍历日期文件夹和系统文件夹,并根据文件的大小将大于 10M 的文件上传至 HDFS,小于或等于 10M 的文件上传至 HBase,并分别统计上传个数。

请确保您的系统上已经安装了 Hadoop 和 HBase,并具有适当的权限来执行 HDFS 和 HBase 相关操作。

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