必威体育Betway必威体育官网
当前位置:首页 > IT技术

FileSplit简单使用

时间:2019-09-29 18:45:31来源:IT技术作者:seo实验室小编阅读:51次「手机版」
 

filesplit



hadoop的FileSplit简单使用

FileSplit类继承关系:

FileSplit类中的属性和方法:

作业输入:

[java] view plain copy print?

  1. hadoop@hadoop:/home/hadoop/blb$ hdfs dfs -text /user/hadoop/libin/input/inputpath1.txt  
  2. hadoop  a  
  3. spark   a  
  4. hive    a  
  5. hbase   a  
  6. tachyon a  
  7. storm   a  
  8. redis   a  
  9. hadoop@hadoop:/home/hadoop/blb$ hdfs dfs -text /user/hadoop/libin/input/inputpath2.txt  
  10. hadoop  b  
  11. spark   b  
  12. kafka   b  
  13. tachyon b  
  14. oozie   b  
  15. flume   b  
  16. sqoop   b  
  17. solr    b  
  18. hadoop@hadoop:/home/hadoop/blb$   

hadoop@hadoop:/home/hadoop/blb$ hdfs dfs -text /user/hadoop/libin/input/inputpath1.txt
hadoop  a
spark   a
hive    a
hbase   a
tachyon a
storm   a
redis   a
hadoop@hadoop:/home/hadoop/blb$ hdfs dfs -text /user/hadoop/libin/input/inputpath2.txt
hadoop  b
spark   b
kafka   b
tachyon b
oozie   b
flume   b
sqoop   b
solr    b
hadoop@hadoop:/home/hadoop/blb$ 

代码

[java] view plain copy print?

  1. import java.io.IOException;  
  2.   
  3.   
  4. import org.apache.hadoop.conf.configuration;  
  5. import org.apache.hadoop.fs.Path;  
  6. import org.apache.hadoop.io.LongWritable;  
  7. import org.apache.hadoop.io.NullWritable;  
  8. import org.apache.hadoop.io.Text;  
  9. import org.apache.hadoop.mapred.SplitLocationInfo;  
  10. import org.apache.hadoop.mapreduce.Job;  
  11. import org.apache.hadoop.mapreduce.MAPPer;  
  12. import org.apache.hadoop.mapreduce.lib.input.fileinputformat;  
  13. import org.apache.hadoop.mapreduce.lib.input.FileSplit;  
  14. import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;  
  15. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;  
  16. import org.apache.hadoop.mapreduce.lib.output.textoutputFormat;  
  17. import org.apache.hadoop.util.GenericOptionsparser;  
  18.   
  19.   
  20. public class GetSplitMapReduce {  
  21.     public static void main(String[] args) throws IOException, ClassnotfoundException, InterruptedException {  
  22.         Configuration conf = new Configuration();  
  23.         String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();  
  24.         if(otherArgs.length!=2){  
  25.             System.err.println("Usage databaseV1 <inputpath> <outputpath>");  
  26.         }  
  27.   
  28.   
  29.         Job job = Job.getinstance(conf, GetSplitMapReduce.class.getSimpleName() + "1");  
  30.         job.setJarByClass(GetSplitMapReduce.class);  
  31.         job.setMapOutputKeyClass(Text.class);  
  32.         job.setMapOutputValueClass(Text.class);  
  33.         job.setOutputKeyClass(Text.class);  
  34.         job.setOutputValueClass(NullWritable.class);  
  35.         job.setMapperClass(MyMapper1.class);  
  36.         job.setNumReduceTasks(0);  
  37.         job.setInputFormatClass(TextInputFormat.class);  
  38.         job.setOutputFormatClass(TextOutputFormat.class);  
  39.         FileInputFormat.addInputPath(job, new Path(otherArgs[0]));  
  40.         FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));  
  41.         job.waitforCompletion(true);  
  42.     }  
  43.     public static class MyMapper1 extends Mapper<LongWritable, Text, Text, NullWritable>{  
  44.         @Override  
  45.         protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, NullWritable>.context context)  
  46.                 throws IOException, InterruptedException {  
  47.           
  48.             FileSplit fileSplit=(FileSplit) context.getInputSplit();  
  49.             String pathname=fileSplit.getPath().getName();  //获取目录名字  
  50.             int depth = fileSplit.getPath().depth();    //获取目录深度  
  51.             Class<? extends FileSplit> class1 = fileSplit.getClass(); //获取当前类  
  52.             long length = fileSplit.getLength();    //获取文件长度  
  53.             SplitLocationInfo[] locationInfo = fileSplit.getLocationInfo(); //获取位置信息  
  54.             String[] locations = fileSplit.getLocations();  //获取位置  
  55.             long start = fileSplit.getStart(); //The position of the first byte in the file to process.  
  56.             String string = fileSplit.toString();  
  57.             //fileSplit.  
  58.               
  59.             context.write(new Text("===================================================================================="), NullWritable.get());  
  60.             context.write(new Text("pathname--"+pathname), NullWritable.get());  
  61.             context.write(new Text("depth--"+depth), NullWritable.get());  
  62.             context.write(new Text("class1--"+class1), NullWritable.get());  
  63.             context.write(new Text("length--"+length), NullWritable.get());  
  64.             context.write(new Text("locationInfo--"+locationInfo), NullWritable.get());  
  65.             context.write(new Text("locations--"+locations), NullWritable.get());  
  66.             context.write(new Text("start--"+start), NullWritable.get());  
  67.             context.write(new Text("string--"+string), NullWritable.get());  
  68.         }  
  69.     }  
  70. }  

import java.io.IOException;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.SplitLocationInfo;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;


public class GetSplitMapReduce {
	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
		Configuration conf = new Configuration();
		String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
		if(otherArgs.length!=2){
			System.err.println("Usage databaseV1 <inputpath> <outputpath>");
		}


		Job job = Job.getInstance(conf, GetSplitMapReduce.class.getSimpleName() + "1");
		job.setJarByClass(GetSplitMapReduce.class);
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(Text.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(NullWritable.class);
		job.setMapperClass(MyMapper1.class);
		job.setNumReduceTasks(0);
		job.setInputFormatClass(TextInputFormat.class);
		job.setOutputFormatClass(TextOutputFormat.class);
		FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
		FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
		job.waitForCompletion(true);
	}
	public static class MyMapper1 extends Mapper<LongWritable, Text, Text, NullWritable>{
		@Override
		protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, NullWritable>.Context context)
				throws IOException, InterruptedException {
		
			FileSplit fileSplit=(FileSplit) context.getInputSplit();
			String pathname=fileSplit.getPath().getName();	//获取目录名字
			int depth = fileSplit.getPath().depth();	//获取目录深度
			Class<? extends FileSplit> class1 = fileSplit.getClass(); //获取当前类
			long length = fileSplit.getLength();	//获取文件长度
			SplitLocationInfo[] locationInfo = fileSplit.getLocationInfo();	//获取位置信息
			String[] locations = fileSplit.getLocations();	//获取位置
			long start = fileSplit.getStart(); //The position of the first byte in the file to process.
			String string = fileSplit.toString();
			//fileSplit.
			
			context.write(new Text("===================================================================================="), NullWritable.get());
			context.write(new Text("pathname--"+pathname), NullWritable.get());
			context.write(new Text("depth--"+depth), NullWritable.get());
			context.write(new Text("class1--"+class1), NullWritable.get());
			context.write(new Text("length--"+length), NullWritable.get());
			context.write(new Text("locationInfo--"+locationInfo), NullWritable.get());
			context.write(new Text("locations--"+locations), NullWritable.get());
			context.write(new Text("start--"+start), NullWritable.get());
			context.write(new Text("string--"+string), NullWritable.get());
		}
	}
}

对应inputpath2.txt文件的输出:

[java] view plain copy print?

  1. hadoop@hadoop:/home/hadoop/blb$ hdfs dfs -text /user/hadoop/libin/out2/part-m-00000  
  2. ====================================================================================  
  3. pathname--inputpath2.txt  
  4. depth--5  
  5. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  6. length--66  
  7. locationInfo--null  
  8. locations--[Ljava.lang.String;@4ff41ba0  
  9. start--0  
  10. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66  
  11. ====================================================================================  
  12. pathname--inputpath2.txt  
  13. depth--5  
  14. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  15. length--66  
  16. locationInfo--null  
  17. locations--[Ljava.lang.String;@2341ce62  
  18. start--0  
  19. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66  
  20. ====================================================================================  
  21. pathname--inputpath2.txt  
  22. depth--5  
  23. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  24. length--66  
  25. locationInfo--null  
  26. locations--[Ljava.lang.String;@35549603  
  27. start--0  
  28. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66  
  29. ====================================================================================  
  30. pathname--inputpath2.txt  
  31. depth--5  
  32. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  33. length--66  
  34. locationInfo--null  
  35. locations--[Ljava.lang.String;@4444ba4f  
  36. start--0  
  37. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66  
  38. ====================================================================================  
  39. pathname--inputpath2.txt  
  40. depth--5  
  41. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  42. length--66  
  43. locationInfo--null  
  44. locations--[Ljava.lang.String;@7c23bb8c  
  45. start--0  
  46. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66  
  47. ====================================================================================  
  48. pathname--inputpath2.txt  
  49. depth--5  
  50. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  51. length--66  
  52. locationInfo--null  
  53. locations--[Ljava.lang.String;@dee2400  
  54. start--0  
  55. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66  
  56. ====================================================================================  
  57. pathname--inputpath2.txt  
  58. depth--5  
  59. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  60. length--66  
  61. locationInfo--null  
  62. locations--[Ljava.lang.String;@d7d8325  
  63. start--0  
  64. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66  
  65. ====================================================================================  
  66. pathname--inputpath2.txt  
  67. depth--5  
  68. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  69. length--66  
  70. locationInfo--null  
  71. locations--[Ljava.lang.String;@2B2Cf90e  
  72. start--0  
  73. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66  

hadoop@hadoop:/home/hadoop/blb$ hdfs dfs -text /user/hadoop/libin/out2/part-m-00000
====================================================================================
pathname--inputpath2.txt
depth--5
class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit
length--66
locationInfo--null
locations--[Ljava.lang.String;@4ff41ba0
start--0
string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66
====================================================================================
pathname--inputpath2.txt
depth--5
class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit
length--66
locationInfo--null
locations--[Ljava.lang.String;@2341ce62
start--0
string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66
====================================================================================
pathname--inputpath2.txt
depth--5
class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit
length--66
locationInfo--null
locations--[Ljava.lang.String;@35549603
start--0
string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66
====================================================================================
pathname--inputpath2.txt
depth--5
class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit
length--66
locationInfo--null
locations--[Ljava.lang.String;@4444ba4f
start--0
string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66
====================================================================================
pathname--inputpath2.txt
depth--5
class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit
length--66
locationInfo--null
locations--[Ljava.lang.String;@7c23bb8c
start--0
string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66
====================================================================================
pathname--inputpath2.txt
depth--5
class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit
length--66
locationInfo--null
locations--[Ljava.lang.String;@dee2400
start--0
string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66
====================================================================================
pathname--inputpath2.txt
depth--5
class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit
length--66
locationInfo--null
locations--[Ljava.lang.String;@d7d8325
start--0
string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66
====================================================================================
pathname--inputpath2.txt
depth--5
class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit
length--66
locationInfo--null
locations--[Ljava.lang.String;@2b2cf90e
start--0
string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath2.txt:0+66

对应inputpath1.txt文件的输出:

[java] view plain copy print?

  1. hadoop@hadoop:/home/hadoop/blb$ hdfs dfs -text /user/hadoop/libin/out2/part-m-00001  
  2. ====================================================================================  
  3. pathname--inputpath1.txt  
  4. depth--5  
  5. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  6. length--58  
  7. locationInfo--null  
  8. locations--[Ljava.lang.String;@4ff41ba0  
  9. start--0  
  10. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath1.txt:0+58  
  11. ====================================================================================  
  12. pathname--inputpath1.txt  
  13. depth--5  
  14. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  15. length--58  
  16. locationInfo--null  
  17. locations--[Ljava.lang.String;@2341ce62  
  18. start--0  
  19. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath1.txt:0+58  
  20. ====================================================================================  
  21. pathname--inputpath1.txt  
  22. depth--5  
  23. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  24. length--58  
  25. locationInfo--null  
  26. locations--[Ljava.lang.String;@35549603  
  27. start--0  
  28. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath1.txt:0+58  
  29. ====================================================================================  
  30. pathname--inputpath1.txt  
  31. depth--5  
  32. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  33. length--58  
  34. locationInfo--null  
  35. locations--[Ljava.lang.String;@4444ba4f  
  36. start--0  
  37. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath1.txt:0+58  
  38. ====================================================================================  
  39. pathname--inputpath1.txt  
  40. depth--5  
  41. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  42. length--58  
  43. locationInfo--null  
  44. locations--[Ljava.lang.String;@7c23bb8c  
  45. start--0  
  46. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath1.txt:0+58  
  47. ====================================================================================  
  48. pathname--inputpath1.txt  
  49. depth--5  
  50. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  51. length--58  
  52. locationInfo--null  
  53. locations--[Ljava.lang.String;@dee2400  
  54. start--0  
  55. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath1.txt:0+58  
  56. ====================================================================================  
  57. pathname--inputpath1.txt  
  58. depth--5  
  59. class1--class org.apache.hadoop.mapreduce.lib.input.FileSplit  
  60. length--58  
  61. locationInfo--null  
  62. locations--[Ljava.lang.String;@d7d8325  
  63. start--0  
  64. string--hdfs://hadoop:9000/user/hadoop/libin/input/inputpath1.txt:0+58  
  65. hadoop@hadoop:/home/hadoop/blb$   

相关阅读

线上+线下+物流?新零售远不止这么简单

新零售区别于传统零售,它的核心是以人为本,利用当下发达的数字技术充分逼近消费者的内心需求,重构人货场,实现“以消费者体验为中心”

jQuery ajax 简单的实例

通过jQuery ajax实现从服务器查询数据,返回给前端并显示到html页面 html文件 <!DOCTYPE html> <html lang="zh-CN" xmlns:th="htt

CloudStack的基本使用

ISO和模板文件的管理 ISO和模板文件通过HTTP或HTTPS协议上传到二级存储中。CloudStack中的模板分为三种:系统模板,内置模板和用户

linux .gz文件 解压缩命令的简单使用

压缩 压缩文件 语法 gzip 源文件 1 如压缩 b.txt 使用命令 gzip b.txt 即可 注意 压缩为 .gz 文件 源文件会消失 如果想保留源

Caffe使用,进行分类,finetune训练

一般来说我们自己需要做的方向,比如在一些特定的领域的识别分类中,我们很难拿到大量的数据。因为像在ImageNet上毕竟是一个千万级的

分享到:

栏目导航

推荐阅读

热门阅读