1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Introduction à Spark avec sparklyr en R

Connected

Cvičení

Sélection avancée II : le SQL

Comme mentionné plus tôt, lorsque vous utilisez l'interface dplyr, sparklyr convertit votre code en SQL avant de l'envoyer à Spark. La plupart du temps, c'est exactement ce qu'il faut. Cependant, vous pouvez aussi écrire du SQL brut pour accomplir la même tâche. La plupart du temps, c'est peu judicieux, car le code est plus difficile à écrire et à déboguer. Par contre, si vous voulez que votre code soit portable — c'est‑à‑dire utilisable en dehors de R — cela peut être utile. Par exemple, un enchaînement de tâches assez courant consiste à utiliser sparklyr pour expérimenter le traitement des données, puis à passer au SQL brut en production. En écrivant du SQL brut dès le départ, vous pourrez simplement copier-coller vos requêtes lorsque vous passerez en production.

Les requêtes SQL sont écrites sous forme de chaînes de caractères, puis transmises à dbGetQuery() du paquet DBI. Le modèle est le suivant.

query <- "SELECT col1, col2 FROM some_data WHERE some_condition"
a_data.frame <- dbGetQuery(spark_conn, query)

Notez qu'à la différence du code dplyr que vous avez écrit, dbGetQuery() exécute toujours la requête et retourne immédiatement les résultats à R. Si vous voulez retarder le retour des données, vous pouvez utiliser dbSendQuery() pour exécuter la requête, puis dbFetch() pour rapatrier les résultats. C'est un usage plus avancé, non couvert ici. Notez aussi que les fonctions de DBI retournent des data.frame plutôt que des tibble, puisque DBI est un paquet de plus bas niveau.

Si vous souhaitez en apprendre davantage sur l'écriture de code SQL, suivez le cours Introduction to SQL.

Pokyny

100 XP

Une connexion Spark a été créée pour vous sous le nom spark_conn. Un tibble rattaché aux métadonnées des pistes stockées dans Spark a été pré‑défini sous track_metadata_tbl, et il est accessible dans les requêtes SQL sous track_metadata.

  • Complétez la requête pour sélectionner toutes les colonnes du cadre de données Spark track_metadata où year est inférieur à 1935 et duration est supérieur à 300 secondes.
  • Appelez dbGetQuery() pour exécuter la requête, assignez les résultats à results, puis affichez le résultat.