Cet article vous présente trois méthodes de mise en œuvre de WordCount. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
1. Shell simplifié
cat /home/sev7e0/access.log | tr -s ' 'n' | uniq -c sort -r | , $1}'
La commande #cat affiche le contenu du texte en une seule fois
#tr -s ' ' 'n' Remplacez les espaces dans le texte par la touche Entrée
#sort Trie tous les fichiers spécifiés en série et Les résultats sont écrits sur la sortie standard.
#uniq -c Filtre les lignes correspondantes adjacentes du fichier d'entrée ou de l'entrée standard et les écrit dans le fichier de sortie ou la sortie standard -c ajoute un numéro de préfixe devant chaque ligne indiquant le nombre d'occurrences de la ligne correspondante <.> #sort | uniq -c Utilisé en même temps pour compter le nombre d'occurrences
#sort -r Organiser les résultats dans l'ordre inverse
#awk '{print $2,$1}' Afficher les résultats, texte d'abord, comptez en dernier
//mapreduce方式 public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); // conf.set("fs.defaultFS", "hdfs://spark01:9000"); // conf.set("yarn.resourcemanager.hostname", "spark01"); Path out = new Path(args[1]); FileSystem fs = FileSystem.get(conf); //判断输出路径是否存在,当路径存在时mapreduce会报错 if (fs.exists(out)) { fs.delete(out, true); System.out.println("ouput is exit will delete"); } // 创建任务 Job job = Job.getInstance(conf, "wordcountDemo"); // 设置job的主类 job.setJarByClass(WordCount.class); // 主类 // 设置作业的输入路径 FileInputFormat.setInputPaths(job, new Path(args[0])); //设置map的相关参数 job.setMapperClass(WordCountMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(LongWritable.class); //设置reduce相关参数 job.setReducerClass(WordCountReduce.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(LongWritable.class); //设置作业的输出路径 FileOutputFormat.setOutputPath(job, out); job.setNumReduceTasks(2); System.exit(job.waitForCompletion(true) ? 0 : 1); }
//spark版wordcount sc.textFile("/home/sev7e0/access.log").flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).foreach(println(_))
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!