Translate
domingo, 3 de junio de 2018
R en Spark
Podemos utilizar R en Spark.
Primero debemos instalar R, yo lo voy a instalar en ubuntu:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
sudo add-apt-repository 'deb [arch=amd64,i386] https://cran.rstudio.com/bin/linux/ubuntu xenial/'
sudo apt-get update
sudo apt-get install r-base
sudo -i R
con este ultimo comando inicializamos R, ahora vamos a instalar txtplot para poder graficar en la consola.
install.packages('txtplot')
podemos probar esto con la siguiente linea:
library('txtplot')
txtplot(cars[,1], cars[,2], xlab = "speed", ylab = "distance")
Ahora salimos de r con q()
Nos ubicamos en el directorio bin de spark y ejecutamos
./sparkR
y si todo fue bien veras algo así:
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 2.2.1
/_/
SparkSession available as 'spark'.
Y bueno, ahora a probarlo!!
podemos probar con el mismo codigo que probamos la instalación de r :
library('txtplot')
txtplot(cars[,1], cars[,2], xlab = "speed", ylab = "distance")
pero no vamos a estar utilizando la potencia de spark.
Vamos a leer un archivito que se llama customers.txt y tiene los siguientes datos:
$ cat customers.txt
100,John Smith, Austin, TX, 78727
200,Joe Johnson, Dallas, TX, 75201
300,Bob Jones, Houston, TX, 77028
400,Andy Davis, San Antonio, TX, 78227
500,James Williams, Austin, TX, 78727
Que corresponden a la estructura:
customer_id: Int, name: String, city: String, state: String, zip_code: String
> csvPath <- “../../customers.txt”
> df <- read.df(csvPath, "csv", header = "false", inferSchema = "true", na.strings = "NA")
> df
SparkDataFrame[_c0:int, _c1:string, _c2:string, _c3:string, _c4:double]
Leímos el archivo como no tiene cabecera, los campos nos quedan como "_c0", "_c1" ... De igual manera para el ejemplo nos sirve.
Vamos contar cuentos clientes tenemos por zip y luego lo imprimimos :
> groupByZip <- summarize(groupBy(df, df$"_c4"), count = n(df$"_c4"))
> head(groupByZip)
_c4 count
1 75201 1
2 77028 1
3 78227 1
4 78727 2
Dejo link:
https://spark.apache.org/docs/latest/sparkr.html