<jupyter_start><jupyter_text>**Introduccion a Big Data**Jugando con Colab & Spark  (Python)De forma bastante practico para utilizar  pyspark en Colab seria ejecutar algunos de los siguientes comandos en una celda en Colab:Haremos lo siguiente :*   Instalacion Rapida Java y Spark*   Configuracion Veloz de Java y Spark*   Ejemplos utilizando PySpark Instalar Java y SparkPodemos hacer rapidamente que nuestro entorno de ejecucion implemente Java<jupyter_code>!apt-get install openjdk-8-jdk-headless -qq > /dev/null<jupyter_output><empty_output><jupyter_text>Vamos a la direccion web de Apache Spark, obtenemos la version deseada y la desempaquetamos<jupyter_code>import os # libreria de manejo del sistema operativo
os.system("wget -q https://www-us.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz")
os.system("tar -xzvf spark-2.4.5-bin-hadoop2.7.tgz")
!ls ##listamos los archivos<jupyter_output><empty_output><jupyter_text>Ahora instalamos **pyspark**<jupyter_code>!pip install -q pyspark<jupyter_output><empty_output><jupyter_text>Configuramos las variables de Java y Spark<jupyter_code>!rm spark-2.4.5-bin-hadoop2.7.tgz.1
!rm spark-2.4.5-bin-hadoop2.7.tgz.2
!ls /content/
# Variables de Entorno
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = f"/content/spark-2.4.5-bin-hadoop2.7"<jupyter_output><empty_output><jupyter_text>Iniciamos y Utilizamos PySparkIniciamos con la importacion de lirerias necesarias y la creacion de una sesion de Spark<jupyter_code># Cargar Pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("Test_spark").master("local[*]").getOrCreate()<jupyter_output><empty_output><jupyter_text>Imprimimos los valores de la sesion<jupyter_code>spark<jupyter_output><empty_output><jupyter_text>En la carpeta sample_dara Colab nos ofrece algunos datasets de muestra, damos una mirada rapida al archivo **./sample_data/california_housing_train.csv**<jupyter_code>!head -n 10 ./sample_data/california_housing_train.csv
#Cargamos el ARchivo con Spark (en Memoria)
archivo = './sample_data/california_housing_train.csv'
df_spark = spark.read.csv(archivo, inferSchema=True, header=True)

# imprimir tipo de archivo
print(type(df_spark))<jupyter_output><empty_output><jupyter_text>¿Cuantos registros posee este dataframe?<jupyter_code>df_spark.count()<jupyter_output><empty_output><jupyter_text>¿Cual es la estructura del Dataframe?<jupyter_code>df_spark.printSchema()<jupyter_output><empty_output><jupyter_text>¿Cual es el nombre de las columnas?<jupyter_code>df_spark.columns<jupyter_output><empty_output><jupyter_text>Mostrar los primeros Registros<jupyter_code>#Ver los primeros 20 registros del dataframe
df_spark.show()<jupyter_output><empty_output><jupyter_text>Hagamos una Descricipcion Estadistica del dataframe<jupyter_code>df_spark.describe().toPandas().transpose()

df_spark.describe().show()
df_spark.describe(['median_house_value']).show()<jupyter_output><empty_output><jupyter_text>Generacion de Datos AleatoriosLa generación de datos aleatorios es útil para probar algoritmos existentes e implementar algoritmos aleatorios, como la proyección aleatoria. **Spark** proporciona métodos para generar columnas que contienen valores extraídos de una distribución, por ejemplo, uniforme (rand) y normal estándar (randn).<jupyter_code>df = spark.range(0, 10)
df.show()
from pyspark.sql.functions import rand, randn

df.select("id", rand(seed=10).alias("uniform"), randn(seed=27).alias("normal")).show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10777934936350778, 'fraction_numerical': 0.01272984441301273, 'mean_word_length': 7.730864197530864, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 54, 'https://': 1, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '13', 'dir': 'jupyter-structured-clean-dedup', 'id': '220788', 'license': 'Apache-2.0', 'n_tokens_mistral': 1348, 'n_tokens_neox': 1295, 'n_words': 268, 'path': 'Colab y PySpark - Inicio.ipynb', 'repo_name': 'Luxillo/meetup0', 'size': '3535'}