Apache Spark, c'est quoi ?

Spark est une infrastructure distribuée de calcul en mémoire. Le système offre une plateforme d'ingestion, d'analyse et de recherche des données. Outre les API de pointe dans Java, Scala, Python et R, Spark possède un vaste écosystème d'applications, dont Spark SQL (données structurées), MLlib (apprentissage automatique), GraphX (données graphiques) et Spark Streaming (flux de données en micro-lots).

Développé par UC Berkeley en 2009, Apache Spark convient bien aux requêtes et analyses interactives avec des jeux de données extrêmement imposants. Le système est disponible dans le cloud via AWS Elastic MapReduce et Databricks, ou sur site. Spark peut fonctionner sur des milliers de machines pour traiter plusieurs pétaoctets de données.

Cas d'utilisation d'Apache Spark

Flexibilité

Comme Spark est une plateforme, le système possède de nombreux API et un vaste écosystème d'applications. Spark fonctionne très bien avec une large gamme de jeux de données. Le système convient donc très bien à divers services d'une même entreprise : ingénierie des données, science des données, analyse et business intelligence.

Spark est un excellent système pour les personnes qui ont investi du temps et de l'argent dans un cluster Hadoop car il peut facilement s'intégrer à l'infrastructure existante et fonctionner avec YARN, Mesos ou en mode indépendant. Spark est également facile à utiliser avec AWS Elastic Mapreduce (EMR), ce qui en fait une option relativement abordable pour les tâches uniques ou les lots programmés.

Syntaxe SQL mature

Depuis la version Spark 2.0, Spark est conforme à la norme ANSI SQL:2003, ce qui signifie que Spark SQL est compatible avec les opérations SQL qui ne sont pas disponibles avec les autres dialectes.

Un vaste réseau de développement

Spark dispose d'une excellente assistance en termes de développement et de fournisseurs. Spark a donc un cycle de développement rapide et continu.

Dans quel cadre Spark est-il idéal ?

Très petites requêtes analytiques

SparkSQL exécute particulièrement bien les petites requêtes analytiques. Altscale, un fournisseur de business intelligence axé sur les solutions Hadoop, a comparé Impala, Hive sur Tez, Spark et Presto dans leur dernier test comparatif, et Spark a démontré une excellente performance (tout comme Impala) avec les petits jeux de données.

De très grandes requêtes analytiques

Spark convient aussi particulièrement bien au traitement des très grands jeux de données, en milliards de lignes. Spark est notamment plus efficace que d'autres moteurs SQL pour lier des tableaux contenant plusieurs milliards de lignes. Spark était aussi plus performant que les autres moteurs SQL dans le test AltScale de 2016 avec les très grands jeux de données.

Workflows de Data Science

Spark s'intègre parfaitement avec d'autres outils des data scientists, tels que R (via SparkR) et Python (via PySpark), et possède une bibliothèque d'apprentissage automatique (MLib) qui fait d'Apache Spark un système très apprécié des data scientists désireux d'explorer les données stockées sur Hadoop.

Considérations de prix

Spark est disponible via les fournisseurs Databricks et Amazon Web Services.

Le tarif Spark facturé par Databricks dépend de l'usage que vous en faites et il existe des programmes d'essai gratuit de la plateforme. Les différents tarifs offerts par Databricks sont les suivants :

  • Communauté : gratuit
  • Databricks pour ingénierie des données (service programmé)
  • Databricks pour analyse des données (à l'aide des fonctions d'un cahier Databricks)
  • Entreprise (livré avec diverses fonctions de sécurité pour les entreprises)

Il est possible d'utiliser un cluster Amazon Elastic MapReduce (EMR) compatible avec de nombreuses options de configurations pour un prix variable. Comme Spark est une base de données en mémoire, il vous est conseillé d'opter pour des types d'instance optimisés pour la mémoire.

Architecture de Hadoop Spark

Types de données

Les principaux API de Spark peuvent traiter des données non structurées, semi-structurées et structurées ; Spark SQL opère avec les deux dernières options, avec un certain degré de structure. La structure des données de Spark adopte le système de jeux de données distribués résilients (RDD). Les RDD sont des ensembles de données distribués avec tolérance aux fautes. Spark et Spark SQL communiquent via les dataframes. Ils ajoutent la structure en colonnes aux données et ils ressemblent aux dataframes R et Python (Pandas).

Taille maximale de données recommandée

En théorie, Spark peut fonctionner sur des milliers de machines, ce qui lui permet de traiter des données massives, à l'échelle du pétaoctet. Le système peut aussi ingérer les formats Avro, texte et en colonnes, pouvant ainsi traiter de nombreux types de données structurées.

Utiliser Spark

Processus pour nouvelles données

Il est possible de lire les nouvelles données directement dans Spark SQL via JSON ou des parseurs de texte-fichier. Vous pouvez lire des fichiers depuis les systèmes locaux, HDFS, S3, RDBMS, et d'autres. Databricks a créé un outil Redshift-to-Spark, qui vous permet de transférer des données depuis Amazon Redshift, via S3, vers Spark afin d'exécuter les requêtes qui vous conviennent.

Par ailleurs, il est possible de créer un flux de données qui utilise Spark ou Spark Streaming pour traiter des données non structurées, définir un schéma clair pour les données et les convertir en dataframe. Vous pouvez ensuite exécuter des requêtes avec les données structurées via divers programmes, dont Spark Shell, en envoyant une demande via beeline ou JDBC.

Maintenance

Spark dispose de nombreux paramètres et configurations afin d'ajuster la performance. Ces options peuvent être un peu trop poussées pour les débutants. Bien que Spark fonctionne naturellement avec les paramètres par défaut, il vous faudra probablement ajuster le système pour atteindre une performance optimale.

La plupart des outils de BI se connectent via JDBC ou ODBC et ne peuvent donc pas émettre des opérations Scala, Python ou dataframe. Au lieu de cela, ils émettent des SQL pour le métastore de Hive. Cette contrainte limite la flexibilité que l'on peut attendre de Spark et de ses outils de BI préférés. En d'autres termes, les outils de BI vont devoir connaître le schéma avant de pouvoir traiter les données sous-jacentes.

Prenez goût à l'analytique

Business intelligence, analyse de big data ou vue client à 360° :
quels que soient vos besoins, Looker peut vous aider. Parlez à nos experts en données.

Demander une démo