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