hadoop 怎么设置多个输入路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop 怎么设置多个输入路径相关的知识,希望对你有一定的参考价值。
1. 多路径输入FileInputFormat是所有使用文件作为其数据源的 InputFormat 实现的基类,它的主要作用是指出作业的输入文件位置。因为作业的输入被设定为一组路径, 这对指定作业输入提供了很强的灵活性。FileInputFormat 提供了四种静态方法来设定 Job 的输入路径:
public static void addInputPath(Job job,Path path);
public static void addInputPaths(Job job,String commaSeparatedPaths);
public static void setInputPaths(Job job,Path... inputPaths);
public static void setInputPaths(Job job,String commaSeparatedPaths);
.1 addInputPath
使用FileInputFormat.addInputPath方法,只能指定一个路径。如果想使用该方法实现多路径输入,需要多次调用来加载不同的路径:
FileInputFormat.addInputPath(job, new Path("result/search/train/pv_log/2016-04-27/"));
FileInputFormat.addInputPath(job, new Path("result/search/train/pv_log/2016-04-28/"));
FileInputFormat.addInputPath(job, new Path("result/search/train/pv_log/2016-04-29/"));
1.2 addInputPaths
使用FileInputFormat.addInputPaths方法,可以指定多个路径。如果想使用该方法实现多路径输入,只需调用一次即可,多个路径字符串之间用逗号分隔开:
FileInputFormat.addInputPaths(job, "result/search/train/pv_log/2016-04-27/,result/search/train/pv_log/2016-04-28/,result/search/train/pv_log/2016-04-29/"); 参考技术A 以上的更改就是两个表进来,都可通过此类进行输入,无须针对两个表,要写两个继承FileInputFormat并实现WritableComparable接口的类。下面才是如何让才采样器只采一个文件的,啊哈!答案说出来笑死人了,那就是利用MultipleInputs先指定要采样的那个输入路径,然后调用采样器,采样结束后于采样相关的流、文件什么的进行关闭,最后再用MultipleInputs指定第二个输入路径。这样路径一的文件(可以包含多个文本,你懂的)先采样,然后路径一和路径二的文件都进入map了,map再根据一些额外的信息判断来自那个路径的数据。
MultipleInputs.addInputPath(conf, new Path(args[0]), Definemyself.class,Mapclass.class);//第一个输入路径
/*********下面采样**********更多采样的细节见我领一篇博客,不一样的视角那篇***********/
Path input = new Path(args[0].toString());
input = input.makeQualified(input.getFileSystem(conf));
InputSampler.RandomSampler<Text, NullWritable> sampler = new InputSampler.RandomSampler<Text, NullWritable>(0.4,20, 5);
/...........此处省略细节................/
IOUtils.closeStream(fs_out);// 关闭流,有关采样的结束了。
/...............此处添加一些其他的需要的工作,例如分布式缓存啦,Hashtable的处理阿............../
MultipleInputs.addInputPath(conf, new Path(args[3]), Definemyself.class, Mapclass.class); //最后指定输入的第二条路径
JobClient.runJob(conf);
win10上配置hadoop环境
直接将hadoop解压在某盘上
配置hadoop的HADOOP_HOME 和 PATH两个环境变量
HADOOP_HOME
PATH
测试
cmd命令行输入hadoop
JAVA_HOME没有设置对
在hadoop-evn.cmd文件里面设置JAVA_HOME路径
这是之前添加的JAVA_HOME的路径
再次测试
以上是关于hadoop 怎么设置多个输入路径的主要内容,如果未能解决你的问题,请参考以下文章