utils_29.py 1.2 KB

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