分別用Shell和Python遍歷查詢Hdfs檔案路徑
阿新 • • 發佈:2019-02-12
1、使用Shell
/Users/nisj/PycharmProjects/BiDataProc/getOssFileForDemo/getHdfsFilePath.sh
2、使用Python
/Users/nisj/PycharmProjects/BiDataProc/getOssFileForDemo/getHdfsFilePath.py
3、說明
此處檔案路徑的遍歷,只考慮到了兩級目錄,且目錄結構相對統一規範。
Shell指令碼通過迴圈查詢及awk操作,將目錄路徑打印出來;而python指令碼是將上級目錄下的檔案路徑存放在一個檔案中,可供檢視(打印出來的情況,只程式碼註釋部分)。
遍歷Os檔案路徑及Oss上的檔案路徑的方式,應該與此相同;需要根據不同的訪問方式進行程式碼更改。
/Users/nisj/PycharmProjects/BiDataProc/getOssFileForDemo/getHdfsFilePath.sh
#!/usr/bin/env bash
for file_path in `hadoop dfs -ls /tmp/oss_access/ | awk -F ' ' '{print $8}' `
do
hadoop dfs -ls $file_path | awk -F ' ' '{print $8}'
done
2、使用Python
/Users/nisj/PycharmProjects/BiDataProc/getOssFileForDemo/getHdfsFilePath.py
# -*- coding=utf-8 -*- import os import re for dir_path in os.popen("""hadoop dfs -ls /tmp/oss_access/ | awk -F ' ' '{print $8}'""").readlines(): dir_path = dir_path.strip() if len(dir_path) != 0: x_dir_path = dir_path.replace('/','#') output = open('txt_path:{x_dir_path}.txt'.format(x_dir_path=x_dir_path), 'w+') file_path_list = os.popen("""hadoop dfs -ls %s | awk -F ' ' '{print $8}' """ % (dir_path)).readlines() output.writelines(file_path_list) # for file_path in file_path_list: # file_path = re.split(' ', file_path.replace('\n', '')) # print file_path[0] output.close()
3、說明
此處檔案路徑的遍歷,只考慮到了兩級目錄,且目錄結構相對統一規範。
Shell指令碼通過迴圈查詢及awk操作,將目錄路徑打印出來;而python指令碼是將上級目錄下的檔案路徑存放在一個檔案中,可供檢視(打印出來的情況,只程式碼註釋部分)。
遍歷Os檔案路徑及Oss上的檔案路徑的方式,應該與此相同;需要根據不同的訪問方式進行程式碼更改。