使用python上传文件夹到HDFS

使用python上传文件夹到HDFS

#可以递归上传文件夹,保存当前文件结构

@staticmethod
    def hdfs_put_all(path, h_path='/testkk/', all_files = []):
        """
        批量上传文件
        :param h_path: hdfs 路径
        @Author: kk
        """
        # 首先遍历当前目录所有文件及文件夹
        try:
            client = pyhdfs.HdfsClient(hosts="", user_name="root")
            file_list = os.listdir(path)
            # 准备循环判断每个元素是否是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
            for file in file_list:
                # 利用os.path.join()方法取得路径全名,并存入cur_path变量,否则每次只能遍历一层目录
                cur_path = os.path.join(path, file)
                # 判断是否是文件夹
                if os.path.isdir(cur_path):
                    client.mkdirs(h_path + file)
                    Property.hdfs_put_all(cur_path, h_path + file + '/', all_files)
                else:
                    all_files.append(file)
                    client.copy_from_local(cur_path, h_path + file)
            return all_files
        except Exception as e:
            print(e)

你可能感兴趣的:(python,hdfs,大数据,linux)