123456789101112131415161718192021222324252627282930313233343536373839404142 |
- def get_unzip_hdfs_file_from_dir(hdfs_dir, save_dir):
- # 命令:获取hdfs目录下的文件
- hadoop_ls = "hadoop fs -ls %s | grep -i '^-'" % hdfs_dir
- # 解压后的文件列表
- save_file_list = []
- # 执行shell命令
- hdfs_result = exec_sh(hadoop_ls, None)
- # 获取命令执行输出
- hdfs_stdout = hdfs_result["stdout"]
- # print("hdfs_stdout = " + hdfs_stdout)
- # 要下载的HDFS文件列表
- hdfs_list = []
- # 判断是否有输出
- if hdfs_stdout:
- # 以行分割, 一行是一个文件的信息
- hdfs_lines = hdfs_stdout.split("\n")
- # 对每一行进行处理
- for line in hdfs_lines:
- # 以空白字符为分割符获取hdfs文件名
- line_list = re.split("\s+", line)
- # -rw-r--r-- 2 caoweidong supergroup 42815 2017-01-23 14:20 /user/000000_0.gz
- if line_list.__len__() == 8:
- # print("line_list[7] = " + line_list[7])
- # HDFS文件加入下载列表
- hdfs_list.append(line_list[7])
- else:
- pass
- # 下载文件
- for file in hdfs_list:
- save_filename = get_unzip_hdfs_file(file, save_dir)
- save_file_list.append(save_filename)
- return save_file_list
- else:
- return False
|