最近有个需求,ftp主机上有很多目录,目录下层级不一,需要把父目录下所有满足的文件夹下的指定文件下载到HDFS,并且保留目录结构,因为数据在ftp主机已经落地,如果用公司内部的etl工具并不好实现这种层级不一的文件导入,故改用开发代码去实现。
思路:1.遍历ftp指定目录,找到指定文件夹的路径
2.拿到所有文件夹的路径,下载到hdfs
实现(这里只放本地测试代码):
1.FTP连接工具类
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
import java.io.IOException;
/**
* @ClassName FTPUtils
* @Decription FTP Connect Util Class
* @Author KGC
* @Date 2019/03/21
**/
public class FTPUtils {
private static Logger logger = Logger.getLogger(FTPUtils.class);
/**
* FTP连接
*/
public static FTPClient loginFTP(String host, int port, String userName, String passWord) {
// ftpClient.enterLocalPassiveMode();
FTPClient ftpClient = null;
try {
ftpClient