Red de conocimiento informático - Material del sitio web - Cómo usar rdd dag para escribir el recuento de palabras

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

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

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; () {

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 }