使用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)