Apache Spark 2 : Creando un RDD con Java


portada-createjavardd

En el post anterior aprendimos los conceptos básicos de un RDDs, en este post los implementaremos con Java y analizaremos su funcionamiento. En Spark tenemos tres formas de crear RDDs :

  • Paralelizando una colección existente en tu programa
  • Creando un dataset de un almacenamiento externo
  •  Creando un RDD de un RDD existente

A continuación veremos como realizar con Java cada una de las formas mencionadas.

Paralelizando una colección existente en tu programa

La primer forma será paralelizando una colección existente en tu programa, veamos un ejemplo:

public class CreateRDDParallelizing {
	public static void main(String[] args) {
		JavaSparkContext sc = new JavaSparkContext(new SparkConf().setAppName("WordCount").setMaster("local[3]"));

		List list = Arrays.asList(1,2,3,4,5,6);
		JavaRDD rdd = sc.parallelize(list);
		//Nuestras transformaciones y acciones
		sc.close();
	}
}

Como se puede ver creamos un objeto de tipo List de java y con spark lo paralelizamos para crear un JavaRDD, recordemos que el objeto JavaSparkContext representa una conexión a un cluster de Spark (Hablaremos más de este contexto en futuros posts) y lo utilizaremos para crear RDDs.

Todos los elementos de la lista serán copiados a un dataset distribuido donde se podrán operar de forma paralela, esto lo hace muy práctico para realizar pruebas pero no para escenarios reales productivos ya que debe cargar en memoria de un nodo todos los datos antes de distribuirlos a lo largo de todo el cluster.

Creando un dataset de un almacenamiento externo

La siguiente forma es cargando un dataset de un almacenamiento externo, en este ejemplo utilizaremos un archivo de texto, veamos el código:

public class CreateRDDFromExternalStorage {
	public static void main(String[] args) {
		JavaSparkContext sc = new JavaSparkContext(new SparkConf().setAppName("WordCount").setMaster("local[3]"));
		JavaRDD rdd = sc.textFile("src/main/resources/words.txt");
		// Use your RDD here
		System.out.println(rdd);
		sc.close();
	}
}

Utilizaremos el método textFile(String file) para leer los datos del archivo y crear un rdd a partir de ellos. Normalmente se utilizarán almacenamientos externos como Amazon s3, HDFS, SFTP, etc. Recordemos que no estamos limitados a archivos sino que también podremos leer datos de JDBC, Cassandra, ElasticSearch, etc.

Creando un RDD de un RDD existente

La última forma será crear un RDD de un RDD existente, veamos el siguiente ejemplo:

public class CreateRDDFromExistingRDD {
	public static void main(String[] args) {
		JavaSparkContext sc = new JavaSparkContext(new SparkConf().setAppName("WordCount").setMaster("local[3]"));

		List list = Arrays.asList(1, 2, 3, 4, 5, 6);
		JavaRDD rdd = sc.parallelize(list);
		JavaRDD rddString = rdd.map(f->f.toString());
		// Use your RDD here
		sc.close();
	}
}

Como vemos crearemos el rddString a partir del rdd utilizando la función map.

En próximos posts veremos ejemplos cada vez más complejos, síguenos en nuestras redes sociales para enterarte sobre nuevo contenido https://www.facebook.com/devs4j/ y https://twitter.com/devs4j.

Puedes encontrar el código completo en el siguiente link https://github.com/raidentrance/spark-tutorial.

Autor: Alejandro Agapito Bautista

Twitter: @raidentrance

Contacto:raidentrance@gmail.com

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s