Get it on Google Play
Mas de 21 años en el mundo del IT corporativo

Aplicaciones Big Data y Data Science sobre Apache Spark

02-12-2019
Spark Logo

Spark Logo

Muy buenas digitales pues aquí tenéis, como es de costumbre, el código del vídeo:

Todos los temas de instalación y primeros pasos los encontrareis en el vídeo anterior “Analítica de datos Big Data con Apache Spark“. Si en el anterior vídeo nos centramos en instalar la plataforma y su uso a través de su shell y usando Scala como lenguaje para interactuar, hoy nos centraremos en crear una aplicación usando Java y Gradle:

Dependencias (build.gradle)

Lo primero, después de crear el proyecto, será configurar nuestro fichero ‘build.gradle’ con las dependencia. El fichero queda de la siguiente manera:

apply plugin: 'java-library'

repositories {
	jcenter()
	}

dependencies {
	compile group: 'org.apache.spark', name: 'spark-core_2.12', version: '2.4.4'
	compile group: 'org.apache.spark', name: 'spark-sql_2.12', version: '2.4.4'
    
	testImplementation 'junit:junit:4.12'
	}

Desarrollo de nuestra aplicación

El código completo de nuestra aplicación es el siguiente. En el vídeo lo implementamos y vamos comentando:

public class Main {

	public static void main(String[] args) {
		
		SparkSession spark = SparkSession
			    .builder()
			    .appName("SuperYoutube")
			    .getOrCreate();
		
		StructType schema = new StructType()
				.add("InvoiceNo", "string")
				.add("StockCode", "string")
				.add("Description", "string")
				.add("Quantity", "int")
				.add("InvoiceDate", "Date")
				.add("UnitPrice", "long")
				.add("CustomerID", "string")
				.add("Country", "string");	
		
	       Dataset<Row> df = spark.read()
	        	    .option("mode", "DROPMALFORMED")
	        	    .schema(schema)
	        	    .option("dateFormat", "dd/MM/yyyy")
	        	    .csv("file:///media/albert/datos/data/data.csv");	
	       
	       System.out.println( "Total registros: "+df.count() );
	       
	       df.createOrReplaceTempView("pedidos");
	       Dataset<Row> sqlResult = spark.sql("SELECT InvoiceNo, InvoiceDate, CustomerID, SUM( UnitPrice*Quantity ) FROM pedidos GROUP BY InvoiceNo,InvoiceDate,CustomerID ORDER BY 4 DESC LIMIT 10");

	       sqlResult.show();
	       
	       sqlResult.write().option("header", "true").csv("file:///media/albert/datos/data/out");
		}

}

Compilado y empaquetado

El compilado y empaquetado de la aplicación la hacemos a través de gradle. Se reduce a una sola instrucción:

./gradlew build

Desplegar la aplicación sobre Apache Spark

El momento de la verdad ha llegado, toca desplegar y ver resultados. Para desplegar utilizaremos el script ‘spark-submit’ que tiene tres parámetros:

#./spark-submit \
#	--master #URL del Nodo Máster# \
#	--class #Classe a ejecutar con el package completo# \
#	#Paquete JAR que contiene el código#

./spark-submit \
	--master spark://albert-MS-7917:7077 \
	--class youtube0.spark.Test1 \
	/path/to/spark-app.jar

Y ya lo tenemos todo. Espero que os ayude y no os olvidéis de comentar y compartir. Y ya si os hacéis Patreons o compráis a través de nuestro link ya ni os cuento… 😉

Si te ha servido, por favor comparte
 

Leave a Reply