Lightning Engine verwenden
Lightning Engine ist die nächste Generation von Apache Spark und bietet exklusive Verbesserungen, die für erhebliche Steigerungen bei der Leistung, Kosteneffizienz und operativen Stabilität sorgen.
Vorteile
Lightning Engine bietet unter anderem folgende Vorteile:
Beschleunigte Datenvorgänge: Durch Optimierungen der Cloud Storage-Interaktion, einschließlich Metadatenverarbeitung, Schreibarbeitslasten und vektorisierter E/A, lassen sich erhebliche Leistungssteigerungen und Kosteneinsparungen erzielen.
Intelligente Abfrageausführung: Nutzen Sie erweiterte Optimierungen, die die gescannten Daten dynamisch reduzieren, die Datenverarbeitung optimieren und effizientere Ausführungspläne für schnellere und kostengünstigere Abfragen generieren.
Optimierte KI- und ML-Arbeitslasten: Verkürzen Sie die Cluster-Startzeiten für GPU-basierte Arbeitslasten und vereinfachen Sie die Bereitstellung in sicheren Umgebungen mit für KI optimierten Images.
Lightning Engine bietet zwar erhebliche Leistungssteigerungen, die genauen Auswirkungen variieren jedoch je nach Arbeitslast. Sie eignet sich am besten für rechenintensive Aufgaben, bei denen Spark Dataframe APIs, Spark Dataset APIs und Spark SQL-Abfragen verwendet werden, anstatt für E/A-gebundene Vorgänge.
Vergleich mit der Standard-Engine
Lightning Engine ist eine Alternative zur Standard-Engine, die zum Ausführen von Spark-Jobs in einem Managed Service for Apache Spark-Cluster verwendet wird. In der folgenden Tabelle werden die Aktivierungseigenschaften, die Anwendbarkeit auf Arbeitslasten und die wichtigsten Vorteile von Lightning Engine im Vergleich zur Standard-Engine verglichen.
| Funktion | Standardmotor | Lightning Engine |
|---|---|---|
| CLI-Flag | --engine=default oder das Flag entfernen |
--engine=lightning |
| Optimal für | Allgemeine Jobs, Entwicklung und Tests | Arbeitslasten im Unternehmensmaßstab, die eine erhebliche Beschleunigung erfordern |
| Hauptvorteile | Baseline-Leistung | Optimierte Cloud Storage-Interaktion, intelligente Abfrageausführung |
Voraussetzungen
Für die Lightning Engine-Funktion gelten die folgenden Anforderungen:
- Image-Version: Lightning Engine muss mit der Managed Service for Apache Spark-Image-Version
2.3.3und späteren2.3-Subminor-Image-Versionen verwendet werden. Lightning Engine wird nicht unterstützt in der Image-Version3.0von Managed Service for Apache Spark. - Unterstützte Jobs: Spark, PySpark, SparkSQL und SparkR werden unterstützt. Die Standard-Engine wird für andere Jobtypen ausgeführt, die an einen Lightning Engine-Cluster gesendet werden.
Ausführung nativer Abfragen
Die Ausführung nativer Abfragen (Native Query Execution, NQE) ist eine optionale Komponente von Lightning Engine, die eine noch stärkere Beschleunigung für bestimmte Jobs ermöglicht. Es handelt sich um eine native Engine, die auf Apache Gluten und Velox basiert und für Google-Hardware optimiert ist. Dadurch wird die Leistung gesteigert, da Teile einer Spark-Abfrage außerhalb der JVM ausgeführt werden.
- NQE wird empfohlen für:
- Rechenintensive Aufgaben, die Spark-DataFrame-APIs und Spark-Dataset-APIs sowie Spark SQL-Abfragen nutzen, mit denen Daten aus Parquet-, ORC-, Apache Iceberg- und Delta Lake-Dateien und -Tabellen gelesen werden. Das Ausgabedateiformat hat keine Auswirkungen auf die Leistung.
- NQE wird nicht empfohlen für:
- Jobs, die stark auf Resilient Distributed Datasets (RDDs), benutzerdefinierten Funktionen (User-Defined Functions, UDFs), den meisten Spark-Bibliotheken für maschinelles Lernen (Machine Learning, ML) und E/A-gebundenen Vorgängen mit Verzögerungen aufgrund des Speicherzugriffs basieren.
Ausführung nativer Abfragen auf ARM
Managed Service for Apache Spark unterstützt die native Ausführung von Abfragen in der Lightning Engine auf ARM-Architektur, die speziell für Google Axion-Prozessoren auf C4A-ARM-VMs optimiert ist (siehe ARM-Maschinentypen, die in Managed Service for Apache Spark unterstützt werden), mit dem 2.3-ubuntu22-arm-Image. Google Axion C4A-Instanzen sind ARM-basierte VMs, die auf ARM Neoverse V2-Kernen basieren und ein deutlich besseres Preis-Leistungs-Verhältnis bieten.
Wenn Sie NQE auf Google Axion ARM-Instanzen ausführen, kombinieren Sie das Preis-Leistungs-Verhältnis auf Hardwareebene und die hohe Arbeitsspeicherbandbreite pro Kern mit der nativen vektorisierten Abfragebeschleunigung auf Softwareebene. Dadurch werden die Abfragelaufzeiten und die Gesamtbetriebskosten (Total Cost of Ownership, TCO) erheblich gesenkt.
Die wichtigsten Vorteile auf ARM:
- 2,5- bis 4‑mal schneller als Open-Source-Spark: Bietet eine 2,5- bis 4‑mal höhere Leistung als Open-Source-Apache Spark bei analytischen Arbeitslasten.
- Kostenoptimierung: Maximiert das Preis-Leistungs-Verhältnis von Google Axion C4A-Instanzen, die ein bis zu 65% besseres Preis-Leistungs-Verhältnis als vergleichbare x86-Instanzen bieten.
- Vollständige Operator- und Formatparität: Vollständige Parität mit x86-NQE-Operatoren mit nativer Beschleunigung für Cloud Storage Parquet-, Apache Iceberg- und Delta Lake-Tabellenformate.
- Keine Codeänderungen erforderlich: Nahtlose Aktivierung in ARM-Clustern mit Standardkonfigurationsflags, ohne dass der Spark-Anwendungscode geändert werden muss.
Voraussetzungen
Für die Funktion „Ausführung nativer Abfragen“ gelten die folgenden Anforderungen:
Ausführungs-Engine: NQE ist nur für Cluster verfügbar, für die bei der Clustererstellung die Lightning-Engine aktiviert wurde.
Unterstützte Jobs: Spark, PySpark, SparkSQL und SparkR werden unterstützt. Die Standard-Engine wird (ohne NQE) für andere Jobtypen ausgeführt, die an einen Lightning Engine-Cluster gesendet werden.
Keine GPUs und Beschleuniger: NQE-fähige Jobs, die auf GPU-Beschleunigern eingereicht werden, schlagen fehl (können aber ohne NQE von Lightning Engine profitieren).
Datentypen: Eingaben der folgenden Datentypen werden nicht unterstützt:
- Byte: ORC und Parquet
- Struct, Array, Map: Parquet
Anforderungen an Architektur und Betriebssystem
Die NQE-Anforderungen unterscheiden sich je nach Prozessorarchitektur:
| Architektur | Unterstützte Maschinentypen | Unterstützte Betriebssysteme und Images |
|---|---|---|
| x86 | Intel- und AMD-Maschinenfamilien | Debian-12 und Ubuntu-22 (Image-Version 2.3.3 und spätere 2.3-Releases) |
| ARM | C4A-Maschinenserie (Google Axion ARM-VMs) | 2.3-ubuntu22-arm-Image (Version 2.3.3 und höher 2.3-Releases) |
Preise
Preisinformationen finden Sie unter Preise für Managed Service for Apache Spark.
Lightning Engine-Cluster erstellen
In diesem Abschnitt erfahren Sie, wie Sie einen Managed Service for Apache Spark-Cluster erstellen, der die Lightning Engine für Spark-Jobs aktiviert, die an den Cluster gesendet werden.
Sie können die Ausführung nativer Abfragen (Native Query Execution, NQE) auch beim Erstellen des Clusters aktivieren oder NQE später für bestimmte Spark-Jobs aktivieren, die an den Cluster gesendet werden.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that you have the permissions required to complete this guide.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that you have the permissions required to complete this guide.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
Erforderliche Rollen
Bestimmte IAM-Rollen (Identity and Access Management) sind erforderlich, um einen Managed Service for Apache Spark-Cluster zu erstellen und Jobs an den Cluster zu senden. Abhängig von den Organisationsrichtlinien hat ein Cloud-Projektinhaber oder Dienstadministrator Ihnen oder einem Dienstkonto diese Rollen möglicherweise bereits zugewiesen. Informationen zum Prüfen von Rollenzuweisungen finden Sie unter Müssen Sie Rollen zuweisen?.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Nutzerrollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Managed Service for Apache Spark-Clusters benötigen:
-
Alle:
- Dataproc-Bearbeiter (
roles/dataproc.editor) für das Projekt - Dienstkontonutzer (
roles/iam.serviceAccountUser) für das Compute Engine-Standarddienstkonto
- Dataproc-Bearbeiter (
Rolle des Dienstkontos
Bitten Sie Ihren Administrator, dem Compute Engine-Standarddienstkonto die IAM-Rolle Dataproc-Worker (roles/dataproc.worker) für das Projekt zuzuweisen, damit das Compute Engine-Standarddienstkonto die erforderlichen Berechtigungen zum Erstellen eines Managed Service for Apache Spark-Clusters hat.
Cluster erstellen
In den folgenden Beispielen wird gezeigt, wie Sie einen Lightning Engine-Cluster mit der Google Cloud -Konsole, der Google Cloud CLI, der Dataproc API, den Cloud-Clientbibliotheken für Python oder Terraform erstellen. Sie können auch einen Cluster mit aktivierter Lightning Engine mit den Cloud-Clientbibliotheken für Go, Java und Node.js erstellen.
Console
- Öffnen Sie die Seite Cluster erstellen.
- Klicken Sie auf Zusätzliche Konfiguration, um den Bereich zu maximieren.
- Bearbeiten Sie Anpassung und Sonstiges.
- Prüfen Sie im angezeigten Steuerfeld, ob das Kästchen Lightning Engine aktivieren angeklickt ist.
- Optional: Wenn Sie die native Ausführungs-Laufzeit standardmäßig für Spark-Jobs aktivieren möchten, klicken Sie das Kästchen Native Execution aktivieren an.
- Klicken Sie auf Speichern.
- Konfigurieren Sie bei Bedarf weitere Clustereinstellungen.
- Klicken Sie auf Cluster erstellen.
ARM-Cluster erstellen:
So erstellen Sie einen ARM-Cluster mit Google Axion und Native Query Execution:
- Wählen Sie unter Worker-Konfiguration die Maschinenserie C4A und dann Ihren ARM-Maschinentyp aus.
- Wählen Sie unter Bild das Bild
2.3-ubuntu22-armaus. - Prüfen Sie unter Zusätzliche Konfiguration > Anpassung und Sonstiges, ob Lightning Engine aktivieren und Native Ausführung aktivieren ausgewählt sind.
- Klicken Sie auf Cluster erstellen.
gcloud
Führen Sie den Befehl
gcloud dataproc clusters createmit dem Flag--engine=lightningaus, um einen Cluster mit aktivierter Lightning Engine zu erstellen. Weitere Informationen finden Sie unter Cluster mit der gcloud CLI erstellen.gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --engine=lightning \ --image-version=2.3Optional: Wenn Sie die native Ausführungslaufzeit standardmäßig für Spark-Jobs aktivieren möchten, fügen Sie das Attribut
spark:spark.dataproc.lightningEngine.runtime=nativehinzu.gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --engine=lightning \ --image-version=2.3 \ --properties='spark:spark.dataproc.lightningEngine.runtime=native'ARM-Cluster mit NQE erstellen: So erstellen Sie einen Managed Service for Apache Spark-Cluster mit Google Axion C4A-ARM-Knoten und aktivierter NQE:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --image-version=2.3-ubuntu22-arm \ --master-machine-type=c4a-standard-16 \ --worker-machine-type=c4a-standard-16 \ --engine=lightning \ --properties='spark:spark.dataproc.lightningEngine.runtime=native'
API
Wenn Sie einen Cluster mit aktivierter Lightning Engine erstellen möchten, senden Sie eine clusters.create-Anfrage. Weitere Informationen finden Sie unter Cluster mit der REST API erstellen.
Setzen Sie im Anfragetext das Feld
engineaufLIGHTNING.{ "projectId": "PROJECT_ID", "clusterName": "CLUSTER_NAME", "config": { "engine": "LIGHTNING", "gceClusterConfig": {}, "softwareConfig": { "imageVersion": "2.3" } } }Optional: Wenn Sie die native Ausführungslaufzeit standardmäßig für alle Jobs aktivieren möchten, fügen Sie das Attribut
spark:spark.dataproc.lightningEngine.runtimehinzu.{ "projectId": "PROJECT_ID", "clusterName": "CLUSTER_NAME", "config": { "engine": "LIGHTNING", "gceClusterConfig": {}, "softwareConfig": { "imageVersion": "2.3", "properties": { "spark:spark.dataproc.lightningEngine.runtime": "native" } } } }
Python
Wenn Sie einen Cluster mit aktivierter Lightning Engine erstellen möchten, verwenden Sie die Methode
create_clusterund legen Sie das Feldenginein der Clusterkonfiguration aufLIGHTNINGfest. Weitere Informationen finden Sie unter Cluster mit Python erstellen.from google.cloud import dataproc_v1 def create_lightning_cluster(project_id, region, cluster_name): client_options = {"api_endpoint": f"{region}-dataproc.googleapis.com:443"} cluster_client = dataproc_v1.ClusterControllerClient(client_options=client_options) cluster = { "project_id": project_id, "cluster_name": cluster_name, "config": { "engine": "LIGHTNING", "software_config": { "image_version": "2.3-debian12", }, } } operation = cluster_client.create_cluster( project_id=project_id, region=region, cluster=cluster ) result = operation.result() print(f"Cluster created successfully: {result.cluster_name}")Optional: Wenn Sie die native Ausführungslaufzeit standardmäßig für Spark-Jobs aktivieren möchten, fügen Sie das Attribut
spark:spark.dataproc.lightningEngine.runtimehinzu.from google.cloud import dataproc_v1 def create_lightning_native_cluster(project_id, region, cluster_name): client_options = {"api_endpoint": f"{region}-dataproc.googleapis.com:443"} cluster_client = dataproc_v1.ClusterControllerClient(client_options=client_options) cluster = { "project_id": project_id, "cluster_name": cluster_name, "config": { "engine": "LIGHTNING", "software_config": { "image_version": "2.3-debian12", "properties": { "spark:spark.dataproc.lightningEngine.runtime": "native" } } } } operation = cluster_client.create_cluster( project_id=project_id, region=region, cluster=cluster ) result = operation.result() print(f"Cluster created successfully: {result.cluster_name}")
Terraform
- Legen Sie in der Konfiguration der
google_dataproc_cluster-Ressource das ArgumentengineaufLIGHTNINGfest. - Weitere Informationen und erweiterte Optionen finden Sie in der offiziellen Terraform-Dokumentation zur Ressource
google_dataproc_cluster.
Cluster-Engine prüfen
Console
- Rufen Sie in der Google Cloud Console die Seite Clusterdetails auf.
- Prüfen Sie, ob der Wert
Lightning Engineim Feld Engine aufgeführt ist. - Wenn Sie die Ausführung nativer Abfragen aktiviert haben, prüfen Sie, ob
nativeim Feld Native Execution (Native Ausführung) aufgeführt ist.
gcloud
Führen Sie den Befehl
gcloud dataproc clusters describeaus, um die Engine und NQE (falls aktiviert) zu überprüfen:gcloud dataproc clusters describe CLUSTER_NAME --project=PROJECT_ID --region=REGIONPrüfen Sie die Ausgabe auf die Attribute
engineundlightningEngine.runtime:clusterName: lightning-engine-cluster engine: lightningEngine lightningEngine.runtime: native
Job mit Lightning Engine senden
Wenn Sie Lightning Engine beim Erstellen eines Clusters aktiviert haben, ist Lightning Engine standardmäßig für den Job aktiviert, wenn Sie einen Spark-Job an den Cluster senden.
Ausführung nativer Abfragen für einen Job aktivieren
Wenn Sie die Ausführung nativer Abfragen (Native Query Execution, NQE) beim Erstellen eines Lightning Engine-Clusters aktiviert haben, werden alle Spark-Jobs mit aktivierter NQE ausgeführt, sofern Sie NQE nicht für einen bestimmten Job deaktivieren.
Wenn Sie NQE beim Erstellen des Lightning Engine-Clusters nicht aktiviert haben, können Sie NQE für einen Job aktivieren, wenn Sie den Job einreichen, wie in den folgenden Beispielen gezeigt.
gcloud
Wenn Sie die Ausführung nativer Abfragen aktivieren möchten, wenn Sie einen Spark-Job senden, fügen Sie das Attribut spark.dataproc.lightningEngine.runtime=native ein:
gcloud dataproc jobs submit spark \
--cluster=CLUSTER_NAME \
--region=REGION \
--properties=spark.dataproc.lightningEngine.runtime=native \
-- ...
API
Wenn Sie die Ausführung nativer Abfragen beim Senden eines Spark-Jobs aktivieren möchten, fügen Sie das Attribut spark.dataproc.lightningEngine.runtime in Ihre Anfrage ein:
{
"job":{
"placement":{
"clusterName": ...
},
"sparkJob":{
"mainClass": ...,
"properties":{
"spark.dataproc.lightningEngine.runtime":"native"
}
}
}
}
Ausführung nativer Abfragen für einen Job deaktivieren
Wenn Sie die Ausführung nativer Abfragen (Native Query Execution, NQE) beim Erstellen eines Lightning Engine-Clusters aktiviert haben, werden alle Spark-Jobs mit aktivierter NQE ausgeführt, sofern Sie NQE nicht für einen bestimmten Job deaktivieren.
Sie können NQE für einen bestimmten Spark-Job deaktivieren, wenn Sie den Job einreichen, wie in den folgenden Beispielen gezeigt.
gcloud
Wenn Sie die Ausführung nativer Abfragen deaktivieren möchten, wenn Sie einen Spark-Job für einen
Lightning Engine-Cluster einreichen, fügen Sie das Attribut
spark.dataproc.lightningEngine.runtime=default ein:
gcloud dataproc jobs submit spark \
--cluster=CLUSTER_NAME \
--region=REGION \
--properties=spark.dataproc.lightningEngine.runtime=default \
-- ...
API
Wenn Sie die Ausführung nativer Abfragen deaktivieren möchten, wenn Sie einen Spark
-Job für einen
Lightning Engine-Cluster einreichen, fügen Sie das Attribut
spark.dataproc.lightningEngine.runtime=default ein:
{
"job":{
"placement":{
"clusterName": ...
},
"sparkJob":{
"mainClass": ...,
"properties":{
"spark.dataproc.lightningEngine.runtime":"default"
}
}
}
}
Ausführung nativer Abfragen für einen Job prüfen
Nachdem Sie einen Job an einen Lightning Engine-Cluster gesendet haben, können Sie prüfen, ob die Ausführung nativer Abfragen für den Job aktiviert ist.
Console
- Rufen Sie in der Google Cloud Console die Seite Jobs auf.
- Klicken Sie auf die Job-ID, um die Seite Jobdetails zu öffnen.
- Prüfen Sie, ob
nativeim Feld Native Execution (Native Ausführung) aufgeführt ist.
gcloud
Führen Sie den Befehl
gcloud dataproc jobs describeaus:gcloud dataproc jobs describe JOB_ID --project=PROJECT_ID --region=REGIONPrüfen Sie die Ausgabe auf
lightningEngine.runtimeim Abschnitt Properties (Eigenschaften):lightningEngine.runtime: native
Konfigurationsparameter
In der folgenden Tabelle sind die wichtigsten Konfigurationsparameter für Lightning Engine und die Ausführung nativer Abfragen zusammengefasst.
| Parametername | Beschreibung | Anwendbare Engines | Standardwert | Standardwert (Lightning Engine) | Überschreibbar durch Nutzer (Jobebene) | Umfang |
|---|---|---|---|---|---|---|
--engine |
Einstellung auf Clusterebene, um die Engine bei der Clustererstellung auszuwählen. | Clusterweit | default |
lightning |
Nein | Cluster |
spark:spark.dataproc.lightningEngine.runtime |
Einstellung auf Clusterebene, um die Lightning-Engine-Laufzeit bei der Clustererstellung auszuwählen. | Nur Lightning | default |
default |
Nein | Cluster |
spark.dataproc.lightningEngine.runtime |
Aktiviert oder deaktiviert die Ausführung nativer Abfragen (Native Query Execution, NQE) in der Lightning Engine. | Nur Lightning | default |
default |
Ja. Kann auf native oder default festgelegt werden. |
Job |
Beschränkungen
Das Aktivieren der Ausführung nativer Abfragen in den folgenden Szenarien kann zu Ausnahmen, Spark-Inkompatibilitäten oder einem Fallback der Arbeitslast auf die standardmäßige Spark-Engine führen.
Fallbacks
Die Ausführung nativer Abfragen in den folgenden Szenarien kann dazu führen, dass für einen Arbeitslast-Fallback die Spark-Ausführungs-Engine verwendet wird:
- ANSI: Wenn der ANSI-Modus aktiviert ist, wird die Ausführung auf Spark zurückgesetzt.
- Modus mit Berücksichtigung der Groß-/Kleinschreibung: Die Ausführung nativer Abfragen unterstützt nur den Spark-Standardmodus ohne Berücksichtigung der Groß-/Kleinschreibung. Wenn der Modus „Groß-/Kleinschreibung beachten“ aktiviert ist, können falsche Ergebnisse auftreten.
- Scan partitionierter Tabellen: Die native Abfrageausführung unterstützt den Scan partitionierter Tabellen nur, wenn der Pfad die Partitionsinformationen enthält. Andernfalls wird für die Arbeitslast die Spark-Ausführungs-Engine verwendet.
Inkompatibles Verhalten
Inkompatibles Verhalten oder falsche Ergebnisse können auftreten, wenn Sie die Ausführung nativer Abfragen in den folgenden Fällen verwenden:
- JSON-Funktionen: Bei der Ausführung nativer Abfragen werden Strings unterstützt, die von doppelten Anführungszeichen umgeben sind, nicht von einfachen Anführungszeichen. Bei einfachen Anführungszeichen werden falsche Ergebnisse angezeigt. Wenn Sie
*im Pfad mit der Funktionget_json_objectverwenden, wirdNULLzurückgegeben. - Parquet-Lesekonfiguration:
- Bei der Ausführung nativer Abfragen wird
spark.files.ignoreCorruptFilesals auf den Standardwertfalsefestgelegt behandelt, auch wenntruefestgelegt ist. - Bei der Ausführung nativer Abfragen wird
spark.sql.parquet.datetimeRebaseModeInReadignoriert und es werden nur die Inhalte der Parquet-Datei zurückgegeben. Unterschiede zwischen dem Legacy-Hybridkalender und dem proleptischen gregorianischen Kalender werden nicht berücksichtigt. Die Ergebnisse von Spark können abweichen.
- Bei der Ausführung nativer Abfragen wird
- NaN: Nicht unterstützt. Unerwartete Ergebnisse können beispielsweise auftreten, wenn Sie
NaNin einem numerischen Vergleich verwenden. - Spaltenweises Lesen in Spark: Ein schwerwiegender Fehler kann auftreten, weil der spaltenweise Spark-Vektor nicht mit der nativen Abfrageausführung kompatibel ist.
- Spill: Wenn Sie eine große Anzahl von Shuffle-Partitionen festlegen, kann die Funktion „Auf Festplatte auslagern“ einen
OutOfMemoryExceptionauslösen. Wenn dies der Fall ist, kann diese Ausnahme durch Reduzieren der Anzahl der Partitionen behoben werden.
Nächste Schritte
- Spark-Batch-Arbeitslasten und ‑Sitzungen mit Lightning Engine beschleunigen
- Von Managed Service for Apache Spark unterstützte ARM-Maschinentypen