ComenzarEmpieza gratis

Pon algo de Spark en tus datos

En el último ejercicio, viste cómo mover datos de Spark a pandas. Sin embargo, ¡quizás quieras ir en la otra dirección, y poner un pandas DataFrame en un clúster de Spark! La clase SparkSession también tiene un método para esto.

El método .createDataFrame() toma un pandas DataFrame y devuelve un Spark DataFrame.

El resultado de este método se almacena localmente, no en el catálogo SparkSession. Esto significa que puedes utilizar todos los métodos de Spark DataFrame en él, pero no puedes acceder a los datos en otros contextos.

Por ejemplo, una consulta a SQL (utilizando el método .sql() ) que haga referencia a tu DataFrame arrojará un error. Para acceder a los datos de esta forma, tienes que guardarlos como una tabla temporal.

Puedes hacerlo utilizando el método .createTempView() Spark DataFrame, que toma como único argumento el nombre de la tabla temporal que quieres registrar. Este método registra el DataFrame como una tabla en el catálogo, pero como esta tabla es temporal, solo se puede acceder a ella desde el SparkSession específico utilizado para crear el DataFrame de Spark.

También existe el método .createOrReplaceTempView(). Esto crea de forma segura una nueva tabla temporal si antes no había nada, o actualiza una tabla existente si ya había una definida. Utilizarás este método para evitar problemas con las tablas duplicadas.

Echa un vistazo al diagrama para ver las distintas formas en que tus estructuras de datos Spark interactúan entre sí.

Ya hay un SparkSession llamado spark en tu espacio de trabajo, numpy se ha importado como np, y pandas como pd.

Este ejercicio forma parte del curso

Introducción a PySpark

Ver curso

Instrucciones del ejercicio

  • El código para crear un pandas DataFrame de números aleatorios ya se ha proporcionado y se ha guardado en pd_temp.
  • Crea un Spark DataFrame llamado spark_temp llamando al método Spark .createDataFrame() con pd_temp como argumento.
  • Examina la lista de tablas de tu clúster de Spark y comprueba que el nuevo DataFrame no está presente. Recuerda que puedes utilizar spark.catalog.listTables() para hacerlo.
  • Registra el spark_temp DataFrame que acabas de crear como tabla temporal utilizando el método .createOrReplaceTempView(). THa tabla temporal debe llamarse "temp". Recuerda que el nombre de la tabla se establece ¡incluyéndolo como único argumento de tu método!
  • Examina de nuevo la lista de tablas.

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

# Create pd_temp
pd_temp = pd.DataFrame(np.random.random(10))

# Create spark_temp from pd_temp
spark_temp = ____

# Examine the tables in the catalog
print(____)

# Add spark_temp to the catalog
spark_temp.____

# Examine the tables in the catalog again
print(____)
Editar y ejecutar código