Cómo usar rdd dag para escribir el recuento de palabras
Para escribir Scala en IDEA, hoy instalé y configuré el entorno de desarrollo integrado de IDEA. IDEA es realmente excelente. Después de aprenderlo, es muy fácil de usar. Para obtener información sobre cómo configurar los entornos de desarrollo Scala e IDEA, consulte los materiales de referencia al final del artículo.
Utilice Scala y Java para implementar WordCount. El JavaWordCount implementado en Java es un ejemplo proporcionado por Spark ($SPARK_HOME/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java).
1. Entorno
SO: Red Hat Enterprise Linux Server versión 6.4 (Santiago)
Hadoop: Hadoop 2.4.1
JDK : 1.7.0_60
Spark: 1.1.0
Scala: 2.11.2
Entorno de desarrollo integrado: IntelliJ IDEA 13.1.3
Nota: Debe instalar IDEA, Scala y JDK en el entorno de Windows del cliente y descargar el complemento Scala para IDEA.
2. Scala implementa el conteo de palabras
1 paquete com.hq
2
3 /**
4 * Usuario: hadoop
5 * Fecha: 10/10/2014 0010
6 * Hora: 18:59
7 */
8 importar org.apache.spark.SparkConf
9 importar org.apache.spark.SparkContext
10 importar org.apache.spark.SparkContext._
11
12 /**
13 * Cuenta el número de apariciones de caracteres
14 */
15 objeto WordCount {
16 def main(args: Array[String]) {
17 if (args.length lt; 1) {
18 System.err .println ("Uso: lt; filegt;")
19 System.exit(1)
20 }
21
22 val conf = new SparkConf()
23 val sc = nuevo SparkContext(conf)
24 val line = sc.textFile(args(0))
25
26 line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ _).collect().foreach(println)
27
28 sc.stop()
29 }
30 }
3. Java implementa el conteo de palabras p>
1 paquete com.hq;
2
3 /**
4 * Usuario: hadoop
5 * Fecha : 2014/10/10 0010
6 * Hora: 19:26
7 */
8
9 importar org.apache.spark.SparkConf;
10 importar org.apache.spark.api.java.JavaPairRDD;
11 importar org.apache.spark.api.java.JavaRDD;
p>12 importar org.apache.spark.api.java.JavaSparkContext;
13 importar org.apache.spark.api.java.function.FlatMapFunction;
14 importar org.apache.spark.api.java.function.Function2;
15 importar org
.apache.spark.api.java.function.PairFunction;
16 importar scala.Tuple2;
17
18 importar java.util.Arrays;
19 importar java.util.List;
20 importar java.util.regex.Pattern
21
22 clase final pública; JavaWordCount {
23 patrón final estático privado ESPACIO = Pattern.compile(" ");
24
25 principal vacío estático público (String[] args) lanza una excepción {
26
27 if (args.length lt; 1) {
28 System.err.println("Uso: JavaWordCount lt; filegt ;");
29 System.exit(1);
30 }
31
32 SparkConf sparkConf = new SparkConf( ).setAppName("JavaWordCount");
33 JavaSparkContext ctx = new JavaSparkContext(sparkConf);
34 JavaRDDlt;Stringgt; líneas = ctx.textFile(args[0], 1
35
36 JavaRDDlt; palabras = líneas.flatMap(new FlatMapFunctionlt; String, Stringgt; () {
37 @Override) p>
38 public Iterablelt; call(String s) {
39 return Arrays.asList(SPACE.split(s));
40 }
41 });
42
43 JavaPairRDDlt; String, Integergt; unos = palabras.mapToPair(new PairFunctionlt; String, String, Integergt; () { p>
44 @Override
45 public Tuple2lt; String, Integergt; call(String s) {
46 return new Tuple2lt; ;
47 }
48 });
49
50 JavaPairRDDlt; String, Integergt; counts = ones.reduceByKey(new Function2lt; Integer, Integer, Integergt; () {
51 @Override
52 llamada entera pública ( Entero i1, Entero i2) {
53 return i1 i2
54 }
55 }); >
57 Listlt; Tuple2lt; String, Integergt; gt; salida = counts.collect();
58 for (Tuple2lt;?, ?gt; tupla: salida) {
59 System.out.println(tuple._1() ": " tuple._2());
60 }
61 ctx.stop();
62 }
63 }