local_dir = "/home/zhengjianfeng/ljh/hive/tmp/%s/%s" % (table, partition_date)#本地文件路径 if not os.path.exists(local_dir):#如果本地没有local_dir这个路径就创建这个路径 os.makedirs(local_dir) files = os.listdir(local_dir) if files: for file in files: os.remove("%s/%s" % (local_dir, file)) for file_path in files_path: logger.info("下载hdfs文件至本地:%s" % file_path) cmd = "hdfs dfs -get %s %s" % (file_path, local_dir) files_str = exec_shell(cmd) if len(os.listdir(local_dir)) == len(files_path):
时间: 2024-04-05 19:33:05 浏览: 145
根据代码,这段程序的作用是从 HDFS(分布式文件系统)下载文件到本地,并检查下载文件的数量是否和指定的文件数量相等。如果不相等,说明下载失败,否则说明下载成功。其中,程序会先创建本地文件夹路径,然后清空该路径下的文件,接着通过执行命令 `hdfs dfs -get` 将 HDFS 上的文件下载到本地文件夹路径中。最后,通过比较本地文件夹中的文件数量和指定的文件数量是否相等,来判断下载是否成功。
相关问题
def create_remote_dir(remote_path): #创建远程文件路径 ssh = paramiko.SSHClient()#创建ssh链接实列 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#创建白名单,默认不询问 ssh.connect('192.168.56.111', 22, 'root', 'root')#连接服务器 ssh.exec_command('mkdir -p ' + remote_path) #在远端创建remote_path路径文件 ssh.close() def upload_sftp(sftp, table, partition_date, files_path): """上传文件至sftp""" sftp_path = "/data/sftp/sftpsyx/upload/%s/%s/" % (table, partition_date) local_dir = "/home/zhengjianfeng/ljh/hive/tmp/%s/%s/" % (table, partition_date) create_remote_dir(sftp_path) for file_path in files_path: file_name = file_path.split('/')[-1] logger.info("上传文件: %s 至:%s" % (local_dir+file_name, sftp_path+file_name)) for i in range(10): upload_res = sftp.put(local_dir + file_name, sftp_path + file_name) if upload_res: break else: time.sleep(2) logger.info("上传成功!")
这段代码是用Python实现的上传文件至sftp服务器的功能,主要包含两个函数:create_remote_dir和upload_sftp。create_remote_dir函数是用于创建远程文件路径的,它使用paramiko模块进行SSH连接,然后通过执行命令来创建对应的远程路径。upload_sftp函数则是用于上传文件至sftp服务器的,它使用了sftp.put方法将本地文件上传至sftp服务器指定路径下。其中,sftp_path是指定的上传路径,local_dir是本地路径,files_path则是需要上传的文件路径列表。在上传文件时,如果上传失败,则会进行多次重试,以确保上传成功。
阅读全文