关键词:
不多说,直接上代码。
代码版本1
1 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs6; 2 3 import java.io.IOException; 4 import java.net.URI; 5 import java.net.URISyntaxException; 6 7 import org.apache.hadoop.conf.Configuration; 8 import org.apache.hadoop.fs.FSDataInputStream; 9 import org.apache.hadoop.fs.FSDataOutputStream; 10 import org.apache.hadoop.fs.FileStatus; 11 import org.apache.hadoop.fs.FileSystem; 12 import org.apache.hadoop.fs.FileUtil; 13 import org.apache.hadoop.fs.Path; 14 import org.apache.hadoop.fs.PathFilter; 15 /** 16 * @function 将指定格式的多个文件上传至 HDFS 17 * 18 * 19 */ 20 public class CopyManyFilesToHDFS { 21 22 private static FileSystem fs = null; 23 private static FileSystem local = null; 24 25 /** 26 * @function Main 方法 27 * @param args 28 * @throws IOException 29 * @throws URISyntaxException 30 */ 31 public static void main(String[] args) throws IOException,URISyntaxException 32 { 33 //文件源路径 这是在 Windows 下测试运行,如果在 Linux 修改srcPath路径即可 34 String srcPath = "/home/hadoop/data/*"; 35 //String srcPath = "D://Data/testdata/*"; 36 //或者Path srcPath =new Path("D://Data/testdata/*"); 37 38 39 //文件目的路径 如果在 Hadoop 环境下运行,使用 dstPath 的相对路径"/copyManyFilesToHDFS/"也可以 40 String dstPath = "hdfs://HadoopMaster:9000/copyManyFilesToHDFS/"; 41 //或者Path dstPath = new Path("hdfs://HadoopMaster:9000/copyManyFilesToHDFS/"); 42 //调用文件上传 list 方法 43 list(srcPath,dstPath); 44 } 45 46 /** 47 * function 过滤文件格式 将多个文件上传至 HDFS 48 * @param dstPath 目的路径 49 * @throws IOException 50 * @throws URISyntaxException 51 */ 52 //2.接下来在 list 方法中,使用 globStatus 方法获取所有 txt 文件,然后通过 copyFromLocalFile 方法将文件上传至 HDFS。 53 public static void list(String srcPath,String dstPath) throws IOException, URISyntaxException { 54 //读取hadoop配置文件 55 Configuration conf = new Configuration(); 56 57 //获取默认文件系统 在Hadoop 环境下运行,也可以使用此种方法获取文件系统 58 fs = FileSystem.get(conf); 59 60 //HDFS接口和获取文件系统对象,本地环境运行模式 61 //URI uri = new URI("hdfs://HadoopMaster:9000"); 62 //fs = FileSystem.get(uri, conf); 63 //获得本地文件系统 64 local = FileSystem.getLocal(conf); 65 //只上传Data/testdata 目录下 txt 格式的文件 ,获得文件目录,即D://Data/testdata/ 66 //FileStatus[] localStatus = local.globStatus(new Path("D://Data/testdata/*"),new RegexAcceptPathFilter("^.*txt$")); 67 FileStatus[] localStatus = local.globStatus(new Path("/home/hadoop/data/*"),new RegexAcceptPathFilter("^.*txt$")); 68 // 获得所有文件路径 69 Path[] listedPaths = FileUtil.stat2Paths(localStatus); 70 Path out= new Path(dstPath); 71 //循坏所有文件 72 for(Path p:listedPaths) 73 { 74 //将本地文件上传到HDFS 75 fs.copyFromLocalFile(p, out); 76 } 77 } 78 79 /** 80 * @function 只接受 txt 格式的文件 81 * @author 82 * 83 */ 84 // 1.首先定义一个类 RegexAcceptPathFilter实现 PathFilter,过滤掉 txt 文本格式以外的文件。 85 public static class RegexAcceptPathFilter implements PathFilter 86 { 87 private final String regex; 88 89 public RegexAcceptPathFilter(String regex) 90 { 91 this.regex = regex; 92 } 93 // 如果要接收 regex 格式的文件,则accept()方法就return flag; 如果想要过滤掉regex格式的文件,则accept()方法就return !flag。 94 95 public boolean accept(Path path) 96 { 97 // TODO Auto-generated method stub 98 boolean flag = path.toString().matches(regex); 99 //只接受 regex 格式的文件 100 return flag; 101 } 102 } 103 }
在Hadoop集群里测试的代码版本
1 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs6; 2 3 import java.io.IOException; 4 import java.net.URI; 5 import java.net.URISyntaxException; 6 7 import org.apache.hadoop.conf.Configuration; 8 import org.apache.hadoop.fs.FSDataInputStream; 9 import org.apache.hadoop.fs.FSDataOutputStream; 10 import org.apache.hadoop.fs.FileStatus; 11 import org.apache.hadoop.fs.FileSystem; 12 import org.apache.hadoop.fs.FileUtil; 13 import org.apache.hadoop.fs.Path; 14 import org.apache.hadoop.fs.PathFilter; 15 /** 16 * @function 将指定格式的多个文件上传至HDFS,在Hadoop集群里测试 17 * 18 * 19 */ 20 public class CopyManyFilesToHDFS 21 { 22 23 private static FileSystem fs = null;//定义文件系统对象,是HDFS上的 24 private static FileSystem local = null; //定义文件系统对象,是本地上的 25 26 /** 27 * @function Main 方法 28 * @param args //@param args是生成文档的时候用的东西,现在不用管。以后慢慢就知道了 29 * @throws IOException 30 * @throws URISyntaxException 31 */ 32 public static void main(String[] args) throws IOException,URISyntaxException 33 { 34 //文件的原路径,这是在Windows下测试运行,如果在 Linux 修改srcPath路径即可 35 String srcPath = "/home/hadoop/djt/data/*"; 36 //String srcPath = "D://Data/testdata/*"; 37 //或者Path srcPath =new Path("D://Data/testdata/*"); 38 39 40 //文件目的路径 如果在 Hadoop 环境下运行,使用 dstPath 的相对路径"/middle/filter/"也可以 41 String dstPath = "hdfs://HadoopMaster:9000/middle/filter/"; 42 //或者Path dstPath = new Path("hdfs://HadoopMaster:9000/middle/filter/"); 43 //调用文件上传 list 方法 44 list(srcPath,dstPath); 45 } 46 47 /** 48 * function 过滤文件格式 将多个文件上传至 HDFS 49 * @param dstPath 目的路径 50 * @throws IOException 51 * @throws URISyntaxException 52 */ 53 //2.接下来在 list 方法中,使用 globStatus 方法获取所有 txt 文件,然后通过 copyFromLocalFile 方法将文件上传至 HDFS。 54 public static void list(String srcPath,String dstPath) throws IOException, URISyntaxException 55 { 56 Configuration conf = new Configuration();//读取hadoop配置文件 57 fs = FileSystem.get(conf);//获取默认文件系统对象,fs。 在Hadoop 环境下运行,也可以使用此种方法获取文件系统 58 //URI uri = new URI("hdfs://HadoopMaster:9000");//HDFS接口和获取文件系统对象,本地环境运行模式 59 //fs = FileSystem.get(uri, conf); 60 local = FileSystem.getLocal(conf);//获得本地文件系统对象,local 61 //只上传Data/testdata 目录下 txt 格式的文件 ,获得文件目录,即D://Data/testdata/ 62 //FileStatus[] localStatus = local.globStatus(new Path("D://Data/testdata/*"),new RegexAcceptPathFilter("^.*txt$")); 63 FileStatus[] localStatus = local.globStatus(new Path("/home/hadoop/djt/data/*"),new RegexAcceptPathFilter("^.*txt$"));//接收目录下的 txt 文件 64 // 获得所有文件路径 65 Path[] listedPaths = FileUtil.stat2Paths(localStatus); 66 Path out= new Path(dstPath); 67 //循坏所有文件 68 for(Path p:listedPaths) 69 { 70 //将本地文件上传到HDFS 71 fs.copyFromLocalFile(p, out); 72 } 73 } 74 75 /** 76 * @function 只接受 txt 格式的文件 77 * @author 78 * 79 */ 80 // 1.首先定义一个类 RegexAcceptPathFilter实现 PathFilter,过滤掉 txt 文本格式以外的文件。 81 public static class RegexAcceptPathFilter implements PathFilter 82 { 83 private final String regex; 84 85 public RegexAcceptPathFilter(String regex) 86 { 87 this.regex = regex; 88 } 89 // 如果要接收 regex 格式的文件,则accept()方法就return flag; 如果想要过滤掉regex格式的文件,则accept()方法就return !flag。 90 @Override 91 public boolean accept(Path path) 92 { 93 // TODO Auto-generated method stub 94 boolean flag = path.toString().matches(regex); 95 //只接受 regex 格式的文件 96 return flag; 97 } 98 } 99 }
在Eclipse/MyEclipse集群里测试的代码版本
1 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs6; 2 3 import java.io.IOException; 4 import java.net.URI; 5 import java.net.URISyntaxException; 6 7 import org.apache.hadoop.conf.Configuration; 8 import org.apache.hadoop.fs.FSDataInputStream; 9 import org.apache.hadoop.fs.FSDataOutputStream; 10 import org.apache.hadoop.fs.FileStatus; 11 import org.apache.hadoop.fs.FileSystem; 12 import org.apache.hadoop.fs.FileUtil; 13 import org.apache.hadoop.fs.Path; 14 import org.apache.hadoop.fs.PathFilter; 15 /** 16 * @function 将指定格式的多个文件上传至 HDFS,在MyEclipse里测试 17 * @author 小讲 18 * 19 */ 20 public class CopyManyFilesToHDFS { 21 22 23 private static FileSystem fs = null;//定义文件系统对象,是HDFS上的 24 private static FileSystem local = null;//定义文件系统对象,是本地上的 25 26 /** 27 * @function Main 方法 28 * @param args 29 * @throws IOException 30 * @throws URISyntaxException 31 */ 32 public static void main(String[] args) throws IOException,URISyntaxException 33 { 34 //文件源路径 这是在 Windows 下测试运行,如果在 Linux 修改srcPath路径即可 35 String srcPath = "D://data/testdata/*"; 36 //或者Path srcPath =new Path("D://Data/testdata/*"); 37 38 //文件目的路径 如果在 Hadoop 环境下运行,使用 dstPath 的相对路径"/middle/filter/"也可以 39 String dstPath = "hdfs://HadoopMaster:9000/middle/filter/"; 40 //或者Path dstPath = new Path("hdfs://HadoopMaster:9000/middle/filter/"); 41 //调用文件上传 list 方法 42 list(srcPath,dstPath); 43 } 44 45 /** 46 * function 过滤文件格式 将多个文件上传至 HDFS 47 * @param dstPath 目的路径 48 * @throws IOException 49 * @throws URISyntaxException 50 */ 51 //2.接下来在 list 方法中,使用 globStatus 方法获取所有 txt 文件,然后通过 copyFromLocalFile 方法将文件上传至 HDFS。 52 public static void list(String srcPath,String dstPath) throws IOException, URISyntaxException 53 { 54 //读取hadoop配置文件 55 Configuration conf = new Configuration(); 56 57 //获取默认文件系统 在Hadoop 环境下运行,也可以使用此种方法获取文件系统 58 //fs = FileSystem.get(conf); 59 60 //HDFS接口和获取文件系统对象,本地环境运行模式 61 URI uri = new URI("hdfs://HadoopMaster:9000"); 62 fs = FileSystem.get(uri, conf); 63 64 local = FileSystem.getLocal(conf);//获得本地文件系统 65 //只上传Data/testdata 目录下 txt 格式的文件 ,获得文件目录,即D://Data/testdata/ 66 FileStatus[] localStatus = local.globStatus(new Path("D://Data/testdata/*"),new RegexAcceptPathFilter("^.*txt$")); 67 // 获得所有文件路径 68 Path[] listedPaths = FileUtil.stat2Paths(localStatus); 69 Path out= new Path(dstPath); 70 //循坏所有文件 71 for(Path p:listedPaths) 72 { 73 //将本地文件上传到HDFS 74 fs.copyFromLocalFile(p, out); 75 } 76 } 77 78 /** 79 * @function 只接受 txt 格式的文件 80 * @author 81 * 82 */ 83 // 1.首先定义一个类 RegexAcceptPathFilter实现 PathFilter,过滤掉 txt 文本格式以外的文件。 84 public static class RegexAcceptPathFilter implements PathFilter 85 { 86 private final String regex; 87 88 public RegexAcceptPathFilter(String regex) 89 { 90 this.regex = regex; 91 } 92 // 如果要接收 regex 格式的文件,则accept()方法就return flag; 如果想要过滤掉regex格式的文件,则accept()方法就return !flag。 93 @Override 94 public boolean accept(Path path) 95 { 96 // TODO Auto-generated method stub 97 boolean flag = path.toString().matches(regex); 98 //只接受 regex 格式的文件 99 return flag; 100 } 101 } 102 }
代码版本2
1 package com.dajiangtai.Hadoop.HDFS; 2 3 import java.io.IOException; 4 import java.net.URI; 5 import java.net.URISyntaxException; 6 7 import org.apache.hadoop.conf.Configuration; 8 import org.apache.hadoop.fs.FSDataInputStream; 9 import org.apache.hadoop.fs.FSDataOutputStream; 10 import org.apache.hadoop.fs.FileStatus; 11 import org.apache.hadoop.fs.FileSystem; 12 import org.apache.hadoop.fs.FileUtil; 13 import org.apache.hadoop.fs.Path; 14 import org.apache.hadoop.fs.PathFilter; 15 /** 16 * @function 将指定格式的多个文件上传至 HDFS 17 * 使用文件模式,实现多文件上传至HDFS 18 * @author 小讲 19 * 20 */ 21 @SuppressWarnings("unused") 22 public class CopyManyFilesToHDFS { 23 24 private static FileSystem fs = null;//FileSystem实例对象,即fs 25 private static FileSystem local = null;//FileSystem实例对象,即Local,本地文件系统 26 27 /** 28 * @function Main 方法 29 * @param args 30 * @throws IOException 31 * @throws URISyntaxException 32 */ 33 public static void main(String[] args) throws IOException,URISyntaxException { 34 //文件上传路径 35 // Path dstPath = new Path("hdfs://djt002:9000/outData/copyManyFilesToHDFS/");//这样会在这个默认的copyManyFilesToHDFS.txt里 36 Path dstPath = new Path("hdfs://djt002:9000/outCopyManyFilesToHDFS/");//要么,你先可以新建好outCopyManyFilesToHDFS这个目录 37 38 39 //调用文件上传 list 方法 40 list(dstPath); 41 } 42 43 /** 44 * function 过滤文件格式 将多个文件上传至 HDFS 45 * @param dstPath 目的路径 46 * @throws IOException 47 * @throws URISyntaxException 48 */ 49 public static void list(Path dstPath) throws IOException, URISyntaxException { 50 //读取hadoop文件系统的配置 51 Configuration conf = new Configuration(); 52 //HDFS 接口 53 URI uri = new URI("hdfs://djt002:9000"); 54 55 // URL、URI与Path三者的区别 56 // Hadoop文件系统中通过Hadoop Path对象来代表一个文件 57 // URL(相当于绝对路径) -> (文件) -> URI(相当于相对路径,即代表URL前面的那一部分) 58 // URI:如hdfs://dajiangtai:9000 59 // 如,URL.openStream 60 61 62 //获得FileSystem实例fs 63 fs = FileSystem.get(uri, conf); 64 // 返回类型是FileSystem,等价于 FileSystem fs = FileSystem.get(uri, conf); 65 66 查看详情hadoopmapreduce编程api入门系列之挖掘气象数据版本2
下面,是版本1。HadoopMapReduce编程API入门系列之挖掘气象数据版本1(一) 这篇博文,包括了,实际生产开发非常重要的,单元测试和调试代码。这里不多赘述,直接送上代码。 MRUn... 查看详情
hadoopmapreduce编程api入门系列之倒排索引(二十四)
不多说,直接上代码。2016-12-1221:54:04,509INFO[org.apache.hadoop.metrics.jvm.JvmMetrics]-InitializingJVMMetricswithprocessName=JobTracker,sessionId=2016-12-1221:54:05,166WARN[org.apache.hado 查看详情
hadoopmapreduce编程api入门系列之fof(fundoffund)(二十三)
不多说,直接上代码。 代码packagezhouls.bigdata.myMapReduce.friend;importo 查看详情
hadoopmapreduce编程api入门系列之统计学生成绩版本1(十七)
不多说,直接上代码。 代码packagezhouls.bigdata.myMapRed 查看详情
hadoopmapreduce编程api入门系列之网页流量版本1(二十二)
不多说,直接上代码。 对流量原始日志进行流量统计,将不同省份的用户统计结果输出到不同文件。 代码packagezhouls.bigdata.myMapReduce.fl 查看详情
hadoopmapreduce编程api入门系列之网页流量版本1(二十一)
不多说,直接上代码。 对流量原始日志进行流量统计,将不同省份的用户统计结果输出到不同文件。 代码packag 查看详情
hbase编程api入门之create(管理端而言)
...; 大家,若是看过我前期的这篇博客的话,则HBase编程API入门之put(客户端而言) 就知道,在这篇博文里,我是在HBaseShell里创建HBase表的。 这里,我带领大家,学习更高级的,因为,在开发中,尽量不能去服... 查看详情
gpu编程入门到精通之gpu程序优化
博主因为工作其中的须要,開始学习GPU上面的编程,主要涉及到的是基于GPU的深度学习方面的知识,鉴于之前没有接触过GPU编程。因此在这里特地学习一下GPU上面的编程。有志同道合的小伙伴。欢迎一起交流和学习,我的邮箱:[e... 查看详情
hbase编程api入门之delete
前面的基础,是HBase编程API入门之putHBase编程API入门之get hbase(main):001:0>scan‘test_table2‘ROWCOLUMN+CELLrow_04column=f1:name,timestamp=1478117286377,value=Andy3row_04column=f2:name,timestamp=14781172 查看详情
hbase编程api入门之get
前面是基础。HBase编程API入门之put packagezhouls.bigdata.HbaseProject.Test1;importjavax.xml.transform.Result;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.HBaseConfig 查看详情
scala入门系列:函数式编程之集合操作
1.Scala的集合体系结构Scala中的集合体系主要包括(结构跟Java相似):Iterable(所有集合trait的根trait)Seq(Range、ArrayBuffer、List等)Set(HashSet、LinkedHashSet、SortedSet等)Map(HashMap、SortedMap、LinkedHashMap等)Scala中的集合分为可变和不... 查看详情
django入门系列之(模板层)(代码片段)
本文目录一模版简介二模版语法之变量三模版之过滤器四模版之标签五自定义标签和过滤器六模版导入入和继承七静态文件相关回到目录一模版简介 你可能已经注意到我们在例子视图中返回文本的方式有点特别。也就是说,... 查看详情
hbase编程api入门之htablepool
HTable是一个比较重的对此,比如加载配置文件,连接ZK,查询meta表等等,高并发的时候影响系统的性能,因此引入了“池”的概念。 引入“HBase里的连接池”的目的是, ... 查看详情
android系统编程入门系列之应用环境及开发环境介绍
作为移动端操作系统,目前最新的Android11.0已经发展的比较完善了,现在也到了系统的整理一番的时间,接下来的系列文章将以Android开发者为中心,争取用归纳总结的态度对初级入门者所应掌握的基础知识聊以标记。应... 查看详情
shiro实战系列之入门实战(代码片段)
一、什么是shiro?ApacheShiro是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。 ApacheShiro的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这... 查看详情
pandas系列之入门篇
Pandas系列之入门篇简介pandas是python用来数据清洗、分析的包,可以使用类sql的语法方便的进行数据关联、查询,属于内存计算范畴,效率远远高于硬盘计算的数据库存储。另外pandas还提供了大数据存储的API——HDFStore,来对接HDF5... 查看详情
系列文章--opencv入门教程
《OpenCV3编程入门》内容简介&勘误&配套源代码下载【OpenCV入门教程之十八】OpenCV仿射变换&SURF特征点描述合辑【OpenCV入门教程之十七】OpenCV重映射&SURF特征点检测合辑【OpenCV入门教程之十六】OpenCV角点检测之Harris... 查看详情