本地文件上传到 HDFS 这事儿,其实不复杂。用的是 Hadoop 的FileSystem API,逻辑清晰,代码也比较好上手。你只要准备好本地文件路径,再指定好 HDFS 目标路径,几行代码就能搞定上传。而且配置方式也挺直观,Configuration
对象管配置信息,FileSystem
对象负责操作文件系统,用着还蛮顺。整个过程基本上就是:拿到文件系统 → 检查目录 → 上传 → 关闭连接,清晰明了。
HDFS 的URI 写法类似hdfs://192.168.xxx.xxx:9000
,要跟你的集群配置一致,不然连不上。路径这块,也挺灵活,比如你可以用Path
对象快速拼接目录,自动创建也方便。上传方法里记得提取下文件名,这样打印日志的时候更清楚。
还有一点值得说的,copyFromLocalFile()这个方法真的好用,封装得好,不用你去管太多细节。用完别忘了fileSystem.close()
,不然有连接泄漏问题,尤其是跑在大批量任务里的时候。
如果你经常跟 Hadoop 打交道,建议把这个上传方法封装一下,做成个工具类,放哪都能用,项目里直接调用,效率也高。哦对了,要是你还在配置 Hadoop 环境,可以先看看CentOS 7 Hadoop 3.1.2 HDFS 配置全攻略,挺详细的。