Können Sie Java/Scala-Funktionen von einer PySpark-Aufgabe aus aufrufen?

Linda Hamilton
Freigeben: 2024-10-21 14:02:02
Original
627 Leute haben es durchsucht

Can You Call Java/Scala Functions from a PySpark Task?

Aufrufen von Java/Scala-Funktionen aus der PySpark-Aufgabe

In PySpark kann die Nutzung von in Java oder Scala implementierten Funktionen eine Herausforderung darstellen. Während die Scala-API eine empfohlene Problemumgehung für den Aufruf von DecisionTreeModel.predict bietet, wird nach einer allgemeineren Lösung gesucht.

Technischer Kontext

Das Problem tritt auf, wenn Java-Funktionen von PySpark aufgerufen werden Aufgaben, insbesondere aufgrund der Beteiligung von JavaModelWrapper.call. Diese Methode versucht, auf SparkContext zuzugreifen, der im Worker-Code nicht verfügbar ist.

Elegante Lösung

Eine elegante Lösung bleibt schwer zu finden. Es gibt zwei schwergewichtige Optionen:

  • Erweitern von Spark-Klassen durch implizite Konvertierungen oder Wrapper
  • Direkte Nutzung des Py4j-Gateways

Alternative Ansätze

Erwägen Sie stattdessen alternative Ansätze:

  • Verwendung der Spark SQL Data Sources API: JVM-Code umschließen, jedoch mit ausführlicher Implementierung und begrenztem Eingabeumfang.
  • Auf DataFrames mit Scala-UDFs arbeiten: Komplexen Code auf DataFrames ausführen, dabei Python/Scala-Datenkonvertierung vermeiden, aber Py4j-Zugriff erfordern.
  • Scala-Schnittstelle erstellen: Erstellen Sie eine Scala-Schnittstelle für die Ausführung beliebigen Codes, die Flexibilität bietet, aber Implementierungsdetails und Datenkonvertierung auf niedriger Ebene erfordert.
  • Externes Workflow-Management-Tool: Wechseln Sie zwischen Python/Scala-Jobs und übergeben Sie Daten über a Verteiltes Dateisystem (DFS), das die Datenkonvertierung vermeidet, aber E/A-Kosten verursacht.
  • Gemeinsamer SQLKontext: Übergeben Sie Daten zwischen Gastsprachen über temporäre Tabellen, optimiert für interaktive Analysen, aber nicht ideal für Batch Jobs.

Das obige ist der detaillierte Inhalt vonKönnen Sie Java/Scala-Funktionen von einer PySpark-Aufgabe aus aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!