标签:
这个是后来补上的,前几天照着书敲的代码,自己没有太搞懂,今天自己把每一步的意思写下来,仅供参考!!!
//利用Job类生成对象,控制整个作业的运行,
//我们在Hadoop集群上运行这个作业时,要把代码打包成为一个jar文件
//(Hadoop在集群上发布这个文件)
//在Job对象的setJarByClass()方法中传递一个类即可,
//Hadoop利用这个类来查找包含他的jar文件,进而找到相关的jar文件。
//构造Job对象之后,需要指定输入和输出数据的路径。调用FileInputFormat类的静态方法
//addInputPath()来定义输入数据的路径,这个路径可以使单个文件的文件,
//一个目录(此时,将目录下所有文件当做输入)或符合特定文件模式的一系列文件。
//还可以利用此方法,来实现多路径的输入。
//调用FileOutPut的静态方法setOutputPath()来制定输出路径(只能有一个输出路径)
//这个方法是reduce函数输出文件的写入目录,
//在运行作业前该目录是不应该存在的,如果存在会报错,并拒绝运作、
//这里可以这么理解,这种预防措施是为了防止数据丢失(长时间运行的作业如果意外覆盖(在没有运行之前就已经存在目录))
//这样的话,就会丢失相应的数据。
//接着通过setMapperClass()和setRedurceClass()指定map类型和reduce类型
//setOutPutKeyClass()和setoutputValueClass()控制map和reduce的函数输出类型。
//输入的类型通过InputFormat类型来控制,默认的使用时TextInputFormat(文本输入格式)
//在设置定义map和reduce函数的类之后,可以开始运行作业,job中的waitForCompletion()方
//法提交作业并且且开始执行完成。该方法中的布尔参数是个详细的标识,所以作业会把进度写到控制台。
//WaitForCompletion()方法返回一个布尔值,表示执行的成败,这个布尔值被转换成程序的退出代码0或1
标签:
原文地址:http://blog.csdn.net/u012965373/article/details/43418377