Verbinden Sie Data Flow PySpark-Anwendungen mit Autonomous Database in Oracle Cloud Infrastructure

Einführung

Wenn Ihre PySpark-App auf Autonomous Database (Autonomous Data Warehouse oder Autonomous Transaction Processing) zugreifen muss, muss sie JDBC-Treiber importieren. Wenn Ihre PySpark-App Zugriff auf Object Storage benötigt, muss sie die oci-Library importieren. Keine dieser Librarys ist im Data Flow vorinstalliert. Sie müssen festlegen, dass sie zur Laufzeit für Ihre App verfügbar sind. Dazu erstellen Sie ein Objekt namens Dependency Archive.

Abhängigkeitsarchive werden in Oracle Cloud Infrastructure Object Storage geladen. Sie stellen der Data Flow-Anwendung einen Link zum Abhängigkeitsarchiv in Object Storage bereit. Wenn Sie Ihre Anwendung ausführen, ruft Data Flow das Archiv ab und stellt es für Ihre PySpark-Apps zur Verfügung. Die PySpark-Apps importieren die Librarys mit der Python-Importanweisung genauso wie in jedem anderen Python-Programm.

Ziele

Nach Abschluss dieses Tutorials befindet sich ein Abhängigkeitsarchiv in einer Datei mit dem Namen archive.zip. Sie können das Abhängigkeitsarchiv mit PySpark-Apps verwenden, die auf Object Storage und Autonomous Database zugreifen.

Voraussetzungen

Laden Sie vor dem Start dieses Tutorials Docker herunter, und installieren Sie es. Siehe Abschnitt Zugehörige Links.

Docker-Image des Packager-Tools herunterladen

Geben Sie den folgenden Befehl in die Befehlszeile ein:

docker pull phx.ocir.io/oracle/dataflow/dependency-packager:latest

JDBC-Treiber herunterladen

Laden Sie die JDBC-Treiber von der Oracle JDBC-Downloadseite herunter. Wenn Sie nicht sicher sind, welche Datenbankversion Sie in Ihrem Mandanten haben, laden Sie die Treiber für 19c herunter.

Verwenden Sie den gezippten JDBC-Treiber und die zugehörigen JARs für Version 8, ojdbc8-full.tar.gz. Laden Sie ojdbc11-full.tar.gz nicht herunter.

Extrahieren Sie die folgenden Dateien, und speichern Sie sie in demselben Verzeichnis, in dem Sie das Paket-Tool ausführen.

ojdbc8.jar
oraclepki.jar
osdt_cert.jar
osdt_core.jar
ucp.jar

Da Sie diese Dateien in demselben Verzeichnis speichern, in dem Sie das Paket-Tool ausführen, müssen Sie keine packages.txt-Datei erstellen.

Erstellen Sie die Konfigurationsdatei

Erstellen Sie eine requirements.txt-Datei. Die Datei enthält eine Liste der Librarys, von denen Ihre Data Flow-Anwendung PySpark abhängt. Für die Verbindung mit Object Storage ist die oci-Library erforderlich. Sie können weitere Librarys nach Bedarf in die PySpark-App aufnehmen.

In diesem Beispiel wird gezeigt, wie Sie das neueste Release der oci-Library angeben:

oci

Wenn Sie ein bestimmtes Release angeben möchten, ähnelt die Datei requirements.txt dem folgenden Beispiel:

oci==2.3.0

Hinweise:

  1. Die Librarys pyspark und py4j werden von Data Flow bereitgestellt. Legen Sie diese Librarys nicht in die Datei requirements.txt.
  2. Sie können leere Zeilen in der Datei requirements.txt enthalten, aber der Packager beschwert sich über eine ungültige Anforderung für jede leere Zeile.

Führen Sie das Packager-Tool aus.

Das Packager-Tool lädt die oci-Library und ihre Abhängigkeiten herunter und erstellt eine Datei mit dem Namen archive.zip. Außerdem wird das aktuelle Verzeichnis nach JAR-Dateien durchsucht. Er sollte die fünf JDBC-Treiberdateien finden und fragen, ob Sie sie in archive.zip aufnehmen möchten.

Bei Windows:

  1. Öffnen Sie die Windows-Eingabeaufforderung als Administrator.
  2. Wechseln Sie in das Verzeichnis, das Ihre JAR-Dateien und die Datei requirements.txt enthält.
  3. Führen Sie den folgenden Befehl aus:

    docker run --rm -v %CD%:/opt/dataflow -it phx.ocir.io/oracle/dataflow/dependency-packager:latest
    

Unter Linux oder Mac:

  1. Öffnen Sie ein Terminal.
  2. Wechseln Sie in das Verzeichnis, das Ihre JAR-Dateien und die Datei requirements.txt enthält.
  3. Führen Sie den folgenden Befehl aus:

    docker run --rm -v $(pwd):/opt/dataflow -it phx.ocir.io/oracle/dataflow/dependency-packager:latest
    

Wenn das Tool abgeschlossen ist, öffnen Sie archive.zip, und prüfen Sie die Struktur. Sie sollte dem folgenden Beispiel sehr ähnlich sein:

python/lib/python3.6/site-packages/backports
python/lib/python3.6/site-packages/certifi
python/lib/python3.6/site-packages/<...>
java/ojdbc8.jar
java/oraclepki.jar
java/<...>
version.txt

Nächste Schritte

Um das Abhängigkeitsarchiv für Ihre PySpark-Apps verfügbar zu machen, müssen Sie zwei Schritte ausführen:

  1. Laden Sie die Datei archive.zip in einen Bucket in Object Storage hoch.
  2. Konfigurieren Sie die Data Flow-Anwendung so, dass sie mit der Datei archive.zip in Object Storage verknüpft wird.

Weitere Informationen finden Sie in der Object Storage-Dokumentation und in der Data Flow-Dokumentation. Das Archiv kann sich in demselben Object Storage-Bucket befinden wie die Python-Apps, die es benötigen.

Danksagungen

Weitere Informationen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere Inhalte für kostenloses Lernen im Oracle Learning YouTube-Kanal zu. Außerdem besuchen Sie education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere Inhalte für kostenloses Lernen im Oracle Learning YouTube-Kanal zu. Außerdem besuchen Sie education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.