JAVA实现批量上传本地文件至HDFS
来源:互联网 发布:网络推广软文怎么写 编辑:程序博客网 时间:2024/06/07 02:22
前言
小白一枚,本文简单实现了批量上传遥感影像至HDFS,所以没有实现窗体简单的关闭、缩小、取消等功能。重申这只是简单demo!话不多说直接上代码。
@MarcusPluspackage com.hdfs;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.net.URI;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JPanel;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileStatus;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.FileUtil;import org.apache.hadoop.fs.Path;public class Demo { public static void main(String[] args) { // 创建 JFrame 实例 JFrame frame = new JFrame("Demo"); // Setting the width and height of frame frame.setSize(512, 512); frame.setLocation(400, 200); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /* 创建面板,这个类似于 HTML 的 div 标签 * 我们可以创建多个面板并在 JFrame 中指定位置 * 面板中我们可以添加文本字段,按钮及其他组件。 */ JPanel panel = new JPanel(); // 添加面板 frame.add(panel); /* * 调用用户定义的方法并添加组件到面板 */ placeComponents(panel); // 设置界面可见 frame.setVisible(true); } private static void placeComponents(JPanel panel) { /* * 这边设置布局为 null */ panel.setLayout(null); // 创建select按钮 JButton selectButton = new JButton("Select Local File"); selectButton.setBounds(10, 80, 80, 25); panel.add(selectButton); selectButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub JFileChooser jf = new JFileChooser(); jf.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); jf.setDialogTitle("请选择要上传的文件夹..."); jf.showDialog(null,null); String srcPath=jf.getSelectedFile().getAbsolutePath()+"/*"; String[] name=jf.getSelectedFile().getAbsolutePath().split("/"); String dstPath="hdfs://127.0.0.1:9000/user/test/"+name[name.length-1]+"/"; if(srcPath.isEmpty()){ System.out.println("请选择本地路径!"); }else { try { listFile(srcPath, dstPath); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } System.out.println("Sucess!"); } }); } protected static void listFile(String srcPath, String dstPath) throws Exception{ // TODO Auto-generated method stub FileSystem fs = null; FileSystem local = null; //读取配置文件 Configuration conf=new Configuration(); //指定HDFS地址 URI uri=new URI("hdfs://127.0.0.1:9000"); fs=FileSystem.get(uri,conf); // 获取本地文件系统 local=FileSystem.getLocal(conf); //获取文件目录 FileStatus[] listFile=local.globStatus(new Path(srcPath), new RegxAcceptPathFilter("^.*tif$")); //获取文件路径 Path[] listPath=FileUtil.stat2Paths(listFile); //输出文件路径 Path outPath=new Path(dstPath); boolean result = fs.isDirectory(outPath); if(result==true){ //循环遍历所有文件路径 for(Path p:listPath){fs.copyFromLocalFile(p, outPath);} }else{ fs.mkdirs(outPath); System.out.println("创建路径: "+outPath); for(Path p:listPath){fs.copyFromLocalFile(p, outPath);} } }}
@MarcusPluspackage com.hdfs;import org.apache.hadoop.fs.Path;import org.apache.hadoop.fs.PathFilter;public class RegxAcceptPathFilter implements PathFilter{ private final String regex; public RegxAcceptPathFilter(String regex) { this.regex=regex; } @Override public boolean accept(Path path) { boolean flag=path.toString().matches(regex); return flag; }}
解释
RegxAcceptPathFilter是用来将本地文件夹下非.tif文件进行过滤掉,以便顺利建立遥感影像库。虽然界面很丑,但是毕竟是个简单demo,别吐槽我啦~
阅读全文
1 0
- JAVA实现批量上传本地文件至HDFS
- 利用java API实现本地文件上传至hdfs
- 将本地文件上传至HDFS
- JAVA实现本地文件批量重命名
- 上传本地文件到HDFS
- spark 本地文件上传hdfs
- 上传本地文件到HDFS
- 上传本地文件到hdfs
- 向hdfs上传本地文件-Hello World
- Hadoop——上传本地文件到hdfs
- [Hadoop]Hadoop上传本地文件到HDFS
- 合并本地文件并上传到hdfs
- Android 使用开源框架实现上传本地文件至服务器
- java SSM框架批量上传实现
- 上传本地文件到HDFS spark可以直接使用
- talend 将本地文件或者mysql文件上传到hadoop/hdfs
- .net 本地文件上传至服务器
- 将本地文件上传至GitHub
- Apache系列—虚拟主机配置的三种方式(三)
- 非极大值抑制(Non-Maximum-Suppression)
- 图像特征提取
- HTML5新特性
- 1817:城堡问题
- JAVA实现批量上传本地文件至HDFS
- Https配置
- AOP之二三事
- PAT A1092. To Buy or Not to Buy (20)
- tomcat 部署
- eclipse的常用快捷键
- Windows环境安装Pyside
- 项目笔记
- mysq 查询所有的国家按照洲来统计结果