Introduction au moteur Spark accéléré par Gluten
Le moteur accéléré Gluten Spark est un moteur optimisé et performant sur watsonx.data. Le moteur Spark utilise Gluten pour décharger l'exécution SQL sur Velox, qui est un moteur d'exécution open source (implémenté en C++), accélérant ainsi le calcul de SparkSQL pour réduire le coût d'exécution des charges de travail.
Gluten est un plugin de moteur natif conçu pour accélérer les charges de travail Spark SQL et DataFrame, en intégrant des moteurs natifs à SparkSQL, en tirant parti de la grande évolutivité du cadre Spark SQL et des performances supérieures des moteurs natifs. Il est entièrement compatible avec l'API Apache Spark, ce qui garantit qu'aucune modification du code n'est nécessaire.
Caractéristiques du moteur Gluten accéléré Spark
-
Prend en charge les formats de fichiers Apache Parquet et Apache Avro.
-
Amélioration des performances de l'analyse des tables.
-
Accélère les requêtes SQL plus importantes grâce aux jointures et à l'agrégation.
-
Prend en charge les catalogues Delta, Hudi, Iceberg et Hive.
-
Écriture Delta et Parquet plus rapide avec UPDATE, DELETE, MERGE INTO, INSERT et CREATE TABLE AS SELECT, y compris pour les tables larges contenant des milliers de colonnes.
-
Remplace les jointures de fusion par des jointures de hachage par défaut.
Limitations
-
L'utilisation des magasins d'objets Amazon S3 prend en charge le DAS pour la soumission des demandes, mais d'autres magasins d'objets tels que ADLS et GCS nécessitent la transmission d'informations d'identification explicites.
-
Les requêtes plus petites ne sont pas accélérées.
-
L'association au catalogue n'est prise en charge que pour les magasins d'objets s3.
-
Retours à la JVM
-
ANSI : Gluten ne prend actuellement pas en charge le mode ANSI. Si l'option ANSI est activée, l'exécution du plan Spark reviendra toujours à Spark vanille.
-
FileSource format : Actuellement, Gluten ne prend en charge que le format de fichier Parquet et partiellement le format ORC. Si un autre format est utilisé, l'opérateur de balayage revient à l'étincelle de vanille.
-
-
Comportement incompatible
-
Fonctions JSON : Velox ne prend en charge que les chaînes entourées de guillemets doubles, et non les guillemets simples, dans les données JSON. Si des guillemets simples sont utilisés, Gluten donne un résultat incorrect.
-
Configuration de lecture de Parquet : Gluten supporte
spark.files.ignoreCorruptFilesavec la valeur par défaut false, si true, le comportement est le même que config false. Gluten ignorespark.sql.parquet.datetimeRebaseModeInRead, il ne renvoie que ce qui est écrit dans le fichier parquet. Il ne tient pas compte de la différence entre le calendrier hybride hérité (grégorien julien) et le calendrier grégorien proleptique. Le résultat peut être différent avec l'étincelle de vanille. -
Configuration de l'écriture des parquets : Spark dispose de
spark.sql.parquet.datetimeRebaseModeInWriteconfig pour décider si le calendrier hybride (julien + grégorien) ou le calendrier grégorien proleptique doit être utilisé lors de l'écriture du parquet pour les dates et les horodatages. Si le Parquet à lire est écrit par Spark avec cette configuration à true, Velox's TableScan produira un résultat différent lors de la lecture.
-
-
Liquide déversé
OutOfMemoryException peut encore être déclenchée dans le cadre de l'implémentation actuelle de la fonction "spill-to-disk", lorsque la valeur "shuffle partitions" est fixée à un grand nombre. Dans ce cas, essayez de réduire le nombre de partitions pour vous débarrasser de l'OOM.
-
CSV Lire
-
L'option d'en-tête doit être vraie. Nous ne prenons désormais en charge que DatasourceV1, c'est-à-dire que l'utilisateur doit définir spark.sql.sources.useV1SourceList=csv. L'option de lecture définie par l'utilisateur n'est pas prise en charge, ce qui ramène la lecture des fichiers CSV à Spark dans la plupart des cas. La lecture de CSV va également revenir à Spark vanille et enregistrer un avertissement lorsque le schéma spécifié par l'utilisateur est différent du schéma du fichier.
-
Pour plus d'informations sur les limitations de Gluten, voir Limitation.
-
-
Gluten n'est pas pris en charge dans un environnement compatible FIPS.
Bonnes pratiques pour le gluten
-
Gluten nécessite une grande mémoire OffHeap car il s'intègre au backend natif, c'est-à-dire Velox, en utilisant le format de colonne OffHeap de Apache Arrow, ce qui est essentiel pour le traitement de données à grande échelle sans dépasser les limites de la mémoire vive de la JVM.
-
Si la mémoire du site offHeap n'est pas suffisante, cela peut entraîner des erreurs de fonctionnement (voir Limitation ). Par conséquent, par défaut, 75 % de la mémoire de l'exécuteur est fixée à offHeap.
-
L'utilisateur peut ajuster le pourcentage de mémoire défini pour offHeap, en utilisant la configuration
ae.spark.offHeap.factor, qui accepte des valeurs (0-1) exclusives, par exemple : 0.75. -
Il est recommandé aux utilisateurs de fixer cette valeur à un niveau inférieur, c'est-à-dire < 0.5, si leur charge de travail comporte de nombreux retours à l'exécution de spark basée sur Java (voir Limitation), afin que l'OOM ne se produise pas lors du retour à l'exécution de spark basée sur. (voir Limitation ) afin que l'OOM ne se produise pas lors du repli sur l'exécution de spark basée sur Java.
-
Il est recommandé de définir une valeur plus élevée, c'est-à-dire 0.75 et plus, si leur charge de travail s'exécute nativement sur Gluten sans fallback.
La valeur par défaut est 0.75.