真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

偽分布模式hadoop如何運(yùn)行java源程序

偽分布模式hadoop如何運(yùn)行java源程序,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)公司、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站設(shè)計(jì)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:食品包裝袋等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致贊譽(yù)!

寫好源代碼之后,首先要編譯: javac -classpath /usr/local/hadoop/hadoop-core-1.2.1.jar:/usr/local/hadoop/lib/commons-cli-1.2.jar count.java -d org 在org目錄下生成三個(gè)class文件: count.class count\ Map.class count\ Reduce.class 之后將三個(gè)class文件打包: jar -cvf count.jar -C org/ . 之后在hadoop根目錄下生成count.jar文件 創(chuàng)建分布式文件夾,并把要分析的數(shù)據(jù)放入之中: bin/hadoop fs -mkdir input bin/hadoop fs --put ~/Downloads/Gowalla_totalCheckins.txt input (~/Downloads/Gowalla_totalCheckins.txt為我文件所在位置) 通過(guò)localhost:50070可以查看: 可以看到txt中的數(shù)據(jù)已經(jīng)考到了input下。 接下來(lái)運(yùn)行程序: bin/hadoop jar count.jar count input output 運(yùn)行完之后會(huì)發(fā)現(xiàn):生成一個(gè)output文件夾,其下有三個(gè)文件,輸出的信息保存在part-r-00000中 文件內(nèi)容: 

196514 2020-07-24T13:45:06Z 53.3648119 -2.2723465833 145064 196514 2020-07-24T13:44:58Z 53.360511233 -2.276369017 1275991 

196514 2020-07-24T13:44:46Z 53.3653895945 -2.2754087046 376497 196514 2020-07-24T13:44:38Z 53.3663709833 -2.2700764333 98503 

196514 2020-07-24T13:44:26Z 53.3674087524 -2.2783813477 1043431 

196514 2020-07-24T13:44:08Z 53.3675663377 -2.278631763 881734 

196514 2020-07-24T13:43:18Z 53.3679640626 -2.2792943689 207763 196514 2020-07-24T13:41:10Z 53.364905 -2.270824 1042822 

其中第一列為用戶id ,第二列為登錄時(shí)間,第三列是用戶的緯度,第四列我為用戶的經(jīng)度,第五列為用戶的地址id 本次程序是分析用戶的登錄時(shí)間,并分時(shí)間段進(jìn)行統(tǒng)計(jì)。 

源代碼:


import java.io.IOException; 
import java.util.*; 
import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Job; 
import org.apache.hadoop.mapreduce.Mapper; 
import org.apache.hadoop.mapreduce.Reducer; 
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; 
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; 
import org.apache.hadoop.util.GenericOptionsParser; 
public class count { 
public static class Map extends Mapper { 
    // 實(shí)現(xiàn)map函數(shù) 
    	public void map(Object key, Text value, Context context)throws IOException, InterruptedException { 
		String line = value.toString(); 
   			int k; 
		StringTokenizer itr = new StringTokenizer(line); 
		int i = 0; 
		int hour = 0,minute = 0,second = 0; 
    	    	while (itr.hasMoreTokens()) { 
			String token = itr.nextToken(); 
	                i++; 
			if(i == 2){ 
				int indexOfT = token.indexOf('T'); 
				int indexOfZ = token.indexOf('Z',indexOfT + 1); 
	        		String substr = token.substring(indexOfT + 1,indexOfZ); 
				int blank1 = substr.indexOf(':'); 
				int blank2 = substr.indexOf(':',blank1 + 1); 
				hour =  Integer.parseInt(substr.substring(0,blank1),10);  
				minute = Integer.parseInt(substr.substring(blank1 + 1,blank2),10); 
				second = Integer.parseInt(substr.substring(blank2 + 1),10); 
			} 
    	    	} 
    	        k = (hour * 60 * 60 + minute * 60 + second) / (3600  * 4) ; 
		context.write(new IntWritable( k ), new IntWritable(1)); 
    	} 
} 

public static class Reduce extends Reducer< IntWritable, IntWritable, IntWritable, IntWritable> { 
    	// 實(shí)現(xiàn)reduce函數(shù) 
	public void reduce(IntWritable key, Iterable values, Context context) 
    		throws IOException, InterruptedException { 
		int sum = 0;			 
		for(IntWritable val : values){ 
			sum += val.get(); 
		} 
		context.write( key, new IntWritable(sum)); 
    	} 
}	 

public static void main(String[] args) throws Exception { 
	Configuration conf = new Configuration(); 
    	String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();    
	if (otherArgs.length != 2) { 
    		System.err.println("Usage: Multiple Table Join  "); 
    	        System.exit(2); 
    	} 
    	Job job = new Job(conf, "count"); 
    	job.setJarByClass(count.class); 
    	// 設(shè)置Map和Reduce處理類 
    	job.setMapperClass(Map.class); 
	job.setCombinerClass(Reduce.class); 
    	job.setReducerClass(Reduce.class); 
    	// 設(shè)置輸出類型 
	job.setOutputKeyClass(IntWritable.class); 
    	job.setOutputValueClass(IntWritable.class); 
    	FileInputFormat.addInputPath(job, new Path(otherArgs[0])); 
    	FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); 
    	System.exit(job.waitForCompletion(true) ? 0 : 1); 
} 
   }

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


標(biāo)題名稱:偽分布模式hadoop如何運(yùn)行java源程序
轉(zhuǎn)載注明:http://weahome.cn/article/iijsee.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部