10 Verbindung zu Compute herstellen
In diesem Abschnitt wird beschrieben, wie Sie Compute in Ihrer Oracle AI Data Platform mit anderen Business-Intelligence-Tools verbinden.
Verbindungen
Sie können Ihre Oracle AI Data Platform mit Oracle Analytics Cloud oder anderen Business-Intelligence-Tools verbinden.
Sie können über verschiedene Business-Intelligence-Tools eine Verbindung zu AI Data Platform herstellen, indem Sie ein benutzerdefiniertes JDBC oder ODBC verwenden, das von AI Data Platform bereitgestellt wird. AI Data Platform unterstützt auch Verbindungen von kommerziellen BI-Tools von Drittanbietern (Tableau, Power BI) oder Open-Source-BI-Tools wie DBeaver. Um über diese Tools eine Verbindung herzustellen, benötigen Sie die Verbindungsdetails des Compute-Clusters in Ihrer AI Data Platform, die Sie auf der Registerkarte "Verbindungsdetails" finden. Die erforderlichen Informationen variieren je nach Produkt, mit dem Sie eine Verbindung herstellen.

Oracle Analytics mit Oracle AI Data Platform verbinden
Sie können über eine Oracle Analytics Cloud-Instanz eine Verbindung zu dem Katalog oder den Tabellen herstellen, die von Ihrer Oracle AI Data Platform-Instanz verwaltet werden.
Um eine Verbindung von Oracle Analytics zu AI Data Platform herzustellen, benötigen Sie eine Verbindungsdatei von AI Data Platform und einen API-Schlüssel von Analytics Cloud.
Konfigurationsdatei für Oracle Analytics-Verbindung abrufen
Sie müssen eine config.json-Datei von Ihrer Oracle AI Data Platform-Instanz herunterladen, um eine Verbindung zu Oracle Analytics herzustellen.
Verbindung zu Oracle Analytics herstellen
Sie können über eine Oracle Analytics-Instanz eine Verbindung zu dem Katalog oder den Tabellen herstellen, die von Ihrer Oracle AI Data Platform-Instanz verwaltet werden.
Wenn Sie die Anweisungen befolgt haben und weiterhin Probleme beim Speichern der Verbindung oder beim Auflisten der Schemas haben, ist möglicherweise ein Clusterneustart erforderlich.
JDBC-Treiber herunterladen
Sie können den JDBC-Treiber auf der Registerkarte "Verbindungsdetails" herunterladen und für verschiedene BI-Tools konfigurieren.
- Navigieren Sie zu Ihrem Workspace, und klicken Sie auf Compute.
- Klicken Sie auf das Cluster, das Sie mit einem JDBC-kompatiblen BI-Tool verbinden möchten, und klicken Sie auf Verbindungen.
- Klicken Sie auf JDBC-Treiber herunterladen.
DBeaver konfigurieren
Sie müssen DBeaver installieren und Dateien vorbereiten, die von Oracle AI Data Platform heruntergeladen wurden, bevor Sie es mit einem Compute-Cluster in AI Data Platform verbinden können.
- Herunterladen und DBeaver-Client installieren Sie können Community- oder Enterprise-Versionen verwenden, müssen jedoch mindestens 22.x sein. DBeaver ist nur für Windows, Mac OS X, Eclipse-Plug-in und Linux verfügbar.
- Dekomprimieren Sie die Datei aus JDBC-Treiber herunterladen.
- Entpacken Sie die Treiberdatei
simbaSpark.zipaus den entpackten Dateien.
DBeaver mit dem Spark Simba JDBC-Treiber konfigurieren
Sie können DBeaver so konfigurieren, dass eine Verbindung zu einem Compute-Cluster in Oracle AI Data Platform hergestellt wird.
- Öffnen Sie DBeaver.
- Klicken Sie auf Database Navigator.
- Klicken Sie auf Treibermanager.
- Klicken Sie auf Neu.
- Geben Sie AI Data Platform als Treibernamen ein.
- Klicken Sie auf Librarys.
- Klicken Sie auf Ordner hinzufügen.
- Navigieren Sie zum Speicherort des sparkSimba.zip-Extrakts.
- Klicken Sie auf Klasse suchen.
- Wählen Sie OK aus.
- Setzen Sie Treiberklasse auf com.simba.spark.jdbc.Driver.
- Klicken Sie auf Einstellungen.
- Setzen Sie Klassenname auf com.simba.spark.jdbc.Driver.
- Klicken Sie auf OK.
Datenbankverbindung in DBeaver erstellen
Um DBeaver mit einem Compute-Cluster in Oracle AI Data Platform zu verbinden, müssen Sie zunächst eine Datenbankverbindung in DBeaver erstellen.
- Öffnen Sie DBeaver.
- Klicken Sie auf Datenbank.
- Klicken Sie auf Neue Datenbankverbindung.
- Klicken Sie auf Alle.
- Wählen Sie AI Data Platform aus.
- Klicken Sie auf Weiter.
- Geben Sie die URL des JDBC-Treibers ein. Die JDBC-URL finden Sie auf der Registerkarte Verbindungsdetails des Compute-Clusters in AI Data Platform.
- Klicken Sie auf Fertig stellen.
DBeaver über JDBC mit Oracle AI Data Platform verbinden
Nachdem DBeaver konfiguriert wurde und eine Datenbankverbindung zu Oracle AI Data Platform besteht, können Sie die Verbindung zwischen DBeaver und AI Data Platform abschließen.
- Öffnen Sie DBeaver.
- Klicken Sie auf Verbinden.
- Wählen Sie aus, ob eine Verbindung mit einem Autorisierungstoken oder einem API-Schlüssel hergestellt werden soll.
- Verbindung mit Autorisierungstoken herstellen
- Verwenden Sie ein Token, indem Sie kein Profil in der URL angeben, wenn Sie kein DEFAULT-Profil haben. Beispiel:
jdbc:spark://gateway.aidp.me-riyadh-1.oci.oraclecloud.com/default;SparkServerType=AIDP;httpPath=cliservice/cf18b4ef-b83e-41dd-82b6-8d391584f6c5Die URL öffnet ein Browserfenster.
Melden Sie sich bei dem Mandanten an, in dem die AI Data Platform-Instanz erstellt wird.
Weitere Informationen finden Sie unter Tokenbasierte Authentifizierung für die CLI.
- Verwenden Sie ein Token, indem Sie kein Profil in der URL angeben, wenn Sie kein DEFAULT-Profil haben. Beispiel:
-
Verbinden Sie sich mit einem API-Schlüssel, indem Sie das OCI-Profil mit
ociProfile=<profile_name>in der Verbindungs-URL angeben.- Verwenden Sie die API-Schlüsselauthentifizierung, um eine Verbindung zu einer AI Data Platform-Instanz herzustellen.
Verwenden Sie den API-Schlüssel, indem Sie das OCI-Profil mit
ociProfile=<profile_name>in der Verbindungs-URL angeben. Beispiel: So verwenden Sie die Demo des OCI-Profilnamens:jdbc:spark://gateway.aidp.me-riyadh-1.oci.oraclecloud.com/default;SparkServerType=AIDP;httpPath=cliservice/cf18b4ef-b83e-41dd-82b6-8d391584f6c5 ;ociProfile=DemoWeitere Informationen finden Sie unter Erforderliche Schlüssel und OCIDs.
- Verwenden Sie die API-Schlüsselauthentifizierung, um eine Verbindung zu einer AI Data Platform-Instanz herzustellen.
- Verbindung mit Autorisierungstoken herstellen
- DBeaver erstellt eine Verbindung zum Lesen von Metadaten und eine Verbindung für alle anderen Vorgänge. Wenn Sie auf Verbindungen beschränkt sind, können Sie die zweite Verbindung deaktivieren, sodass DBeaver eine Verbindung für alle Vorgänge verwendet.
- Klicken Sie auf Voreinstellungen.
- Klicken Sie auf Allgemein.
- Klicken Sie auf Metadaten.
- Deaktivieren Sie die Option Separate Verbindung für Metadatenlesevorgänge öffnen.
ODBC-Treiber herunterladen
Sie können den ODBC-Treiber auf der Registerkarte "Verbindungsdetails" herunterladen und für verschiedene BI-Tools konfigurieren.
API zur Ausführung von SQL-Anweisungen
Mit der API zur Ausführung von SQL-Anweisungen können Sie eine schreibgeschützte SQL-Anweisung in einem Compute-Cluster von einer externen Anwendung, Automatisierung oder einem Agent ausführen.
Die API gibt das Ergebnis direkt für kleine Ergebnismengen zurück oder stellt einen temporären Link für größere Ergebnisse bereit. Die SQL-Ausführungs-API verwendet die Oracle Cloud Infrastructure-Anforderungssignatur. Anweisungen werden mit der Identität und den Berechtigungen des authentifizierten Aufrufers ausgeführt. Sie können eine Anweisung weiterleiten, ihren Status und ihre Ergebnisse abrufen und eine laufende Anweisung abbrechen.
- Ein gestartetes Compute-Cluster mit dem Status "Aktiv"
- Der Compute-Clusterschlüssel (ID). Sie finden dies auf der Registerkarte Details des Clusters unter "Allgemeine Informationen".
- Der Gatewayhostname für das Cluster. Sie finden den Hostnamen auf der Registerkarte Verbindungsdetails des Clusters unter JDBC-Treiber oder ODBC-Treiber.
- Ein OCI-CLI-Sicherheitstokenprofil im verwendeten CLI-Terminal oder der verwendeten Anwendung. Sie können sich anmelden, indem Sie
oci session authenticate --profile-name <profile-name>ausführen und die Prompts befolgen.
So legen Sie Verbindungswerte fest
Stellen Sie sicher, dass Sie die Verbindungswerte für Ihre Umgebung im Terminal oder in der Anwendung festgelegt haben, in dem die OCI-CLI konfiguriert ist.
export BASE_URI="https://<gateway-host>"
export COMPUTE_CLUSTER_KEY="<compute-cluster-key>"
export REGION="<region>"
export PROFILE="<oci-profile>"
export REQ_SUFFIX="$(date +%s)"export BASE_URI="https://dev1.gateway.dataflow.us-phoenix-1.oci.oc-test.com:443"
export COMPUTE_CLUSTER_KEY="12345a67-b89c-1d23-4567-ef8912345ghi"
export REGION="us-phoenix-1"
export PROFILE="MYPROFILE"
export REQ_SUFFIX="20261022-123456"SQL-Anweisung - API-Aktionen
Um Aktionen für die API zur Ausführung von SQL-Anweisungen auszuführen, müssen Sie den Endpunkt über die Oracle Cloud Infrastructure-CLI aufrufen.
Sie führen die folgenden Aktionen von einem Terminal oder einer Anwendung aus, das/die mit Ihrer OCI-CLI konfiguriert ist.
Anforderungsoptionen der API zur Ausführung von SQL-Anweisungen
Die folgenden Anforderungsfelder werden beim Erstellen einer API-Anforderung für die Ausführung von SQL-Anweisungen verwendet.
| Feld | Beschreibung |
|---|---|
statement |
Eingabe erforderlich. Schreibgeschützte SQL-Anweisung. |
wait_timeout |
Optional. Die maximale Zeit, die die API wartet, bis die Anweisung abgeschlossen ist, bevor eine Antwort zurückgegeben wird. |
disposition |
Geben Sie INLINE oder EXTERNAL_LINKS an. |
row_limit |
Die maximale Anzahl von Zeilen, die für die Anweisung beibehalten werden. |
byte_limit |
Die maximale Anzahl von Byte, die für die Anweisung beibehalten werden. |
catalog |
Optional. Der Katalog, der beim Ausführen der Anweisung verwendet werden soll. |
schema |
Optional. Das Schema, das beim Ausführen der Anweisung verwendet werden soll. |
parameters |
Optional. Ein Array mit benannten Parameterwerten für die SQL-Anweisung. |
query_tags |
Optional. Schlüsselwert-Tags zur Identifizierung und Verfolgung einer Anweisung. Geben Sie maximal 20 Einträge an. |
request_id |
Optional. Eine vom Aufrufer bereitgestellte Korrelations- oder Idempotenzkennung. Verwenden Sie den Wert nur für dieselbe logische Anforderung erneut. |
opc-request-id |
Optional. Ein Anforderungsheader zum Verfolgen der Anforderung. Verwenden Sie nur Buchstaben, Zahlen, Unterstriche und Bindestriche. |
SQL-Anweisung weiterleiten
SQL-Anweisungen werden an diesen API-Endpunkt weitergeleitet:
POST /20200129/computeClusters/<compute-cluster-key>/workbench/sql/statementswait_timeout-Wert von 10 Sekunden für ein Ergebnis:oci raw-request \
--target-uri "${BASE_URI}/20200129/computeClusters/${COMPUTE_CLUSTER_KEY}/workbench/sql/statements" \
--http-method POST \
--request-headers "$(printf '{"Content-Type":"application/json","opc-request-id":"sql-submit-%s","opc-retry-token":"sql-submit-%s"}' "$REQ_SUFFIX" "$REQ_SUFFIX")" \
--request-body '{"statement":"SELECT 1 AS api_smoke_test","wait_timeout":"10s","on_wait_timeout":"CONTINUE","format":"JSON_ARRAY","disposition":"INLINE","row_limit":100,"byte_limit":1048576}' \
--region "${REGION}" \
--auth security_token \
--profile "${PROFILE}" \
| tee /tmp/sql-submit.json \
| jq '{http_status:.status, statement_id:.data.statement_id, state:.data.status.state, result:.data.result.data_array, opc_request_id:.headers["opc-request-id"]}'{
"http_status": "200 OK",
"statement_id": "095865c4-27ce-41cc-99bb-67af1de760b2",
"state": "SUCCEEDED",
"result": [
[
"1"
]
],
"opc_request_id": "sql-submit-20261022-214855/FBBFDCB770BDEFBC654EAE933E45E811/6CD8518A6A62E6411552DBFEF5ECEAD7"
}Das Feld wait_timeout gibt an, wie lange die API auf den Abschluss der Anweisung wartet, bevor eine Antwort zurückgegeben wird. Wenn die Anweisung innerhalb der angegebenen Wartezeit abgeschlossen wird, gibt die API 200 OK zurück und schließt das Anweisungsergebnis ein. Wenn die Anweisung nicht innerhalb dieser Zeit abgeschlossen wird, gibt die API 202 Accepted zurück und fährt mit der Ausführung der Anweisung fort.
Sie können den Filter jq ändern, um die für die Anwendung erforderlichen Antwortfelder anzuzeigen. Der Befehl speichert die vollständige API-Antwort in der temporären Datei /tmp/sql-submit.json, die auf weitere Antwortdetails geprüft werden kann.
Anweisung mit externen Links weiterleiten
oci raw-request \
--target-uri "${BASE_URI}/20200129/computeClusters/${COMPUTE_CLUSTER_KEY}/workbench/sql/statements" \
--http-method POST \
--request-headers '{"Content-Type":"application/json","opc-request-id":"req-sql-external-'"$REQ_SUFFIX"'","opc-retry-token":"retry-sql-external-'"$REQ_SUFFIX"'"}' \
--request-body "$(jq -nc --arg request_id "sql-external-$REQ_SUFFIX" '{
statement: "SELECT id, sha2(cast(id AS STRING), 256) AS hash FROM range(2000)",
wait_timeout: "30s",
on_wait_timeout: "CONTINUE",
format: "JSON_ARRAY",
disposition: "EXTERNAL_LINKS",
row_limit: 2000,
byte_limit: 1048576,
request_id: $request_id
}')" \
--no-retry \
--region "${REGION}" \
--auth security_token \
--profile "${PROFILE}" \
| tee /tmp/sql-external-submit.json \
| jq '(.data.result // {}) as $result |
{
http_status: .status,
statement_id: .data.statement_id,
state: .data.status.state,
disposition: .data.manifest.disposition,
first_chunk_index: ($result.external_links[0].chunk_index // null),
first_chunk_row_count: ($result.external_links[0].row_count // null),
next_chunk_index: $result.next_chunk_index,
external_link_count: (($result.external_links // []) | length),
truncated: .data.manifest.truncated,
opc_request_id: .headers["opc-request-id"]
}'{
"http_status": "200 OK",
"statement_id": "661527ef-dd96-480f-b65a-ac63aad6b910",
"state": "SUCCEEDED",
"disposition": "EXTERNAL_LINKS",
"first_chunk_index": 0,
"first_chunk_row_count": 1000,
"next_chunk_index": 1,
"external_link_count": 1,
"truncated": false,
"opc_request_id": "req-sql-external-20261022-225359/6D4D256A0952BA3E8A21A8F4299E35FC/062DA0791BE4E344828CD8F4DE538FD6"
}In diesem Beispiel wird der temporäre externe Ergebnislink in /tmp/sql-external-submit.json gespeichert und nicht in der Befehlsantwort angezeigt.
Hinweis:
Freigeben Sie keine externen Ergebnislinks, oder speichern Sie sie nicht in Quellcode, Protokollen, Tickets oder anderen allgemein zugänglichen Orten. Jeder, der über einen gültigen Link verfügt, kann auf die zugehörigen Ergebnisdaten zugreifen, bis der Link abläuft.Wenn truncated true ist, hat das zurückgegebene Ergebnis den angegebenen Zeilengrenzwert oder Bytegrenzwert erreicht.
statement_id festlegen
statement_id wird benötigt, um Informationen über die Anweisung abzurufen, wie Status oder Ergebnisse, und um eine Anweisung abzubrechen. Sie können die statement_id festlegen, wenn die Anweisung wie folgt weitergeleitet wird:export STATEMENT_ID="095865c4-27ce-41cc-99bb-67af1de760b2"
echo "${STATEMENT_ID}"statement_id wie folgt festlegen:export STATEMENT_ID="$(jq -r '.data.statement_id' /tmp/sql-submit.json)"SQL-Anweisungsstatus anfordern
statement_id von diesem Endpunkt abrufen:GET /20200129/computeClusters/<compute-cluster-key>/workbench/sql/statements/<statement-id>Im folgenden Beispiel wird der Status einer Anweisung mithilfe der statement_id abgerufen:
oci raw-request \
--target-uri "${BASE_URI}/20200129/computeClusters/${COMPUTE_CLUSTER_KEY}/workbench/sql/statements/${STATEMENT_ID}" \
--http-method GET \
--request-headers "$(printf '{"opc-request-id":"sql-status-%s"}' "$REQ_SUFFIX")" \
--region "${REGION}" \
--auth security_token \
--profile "${PROFILE}" \
| jq '{http_status:.status, statement_id:.data.statement_id, state:.data.status.state, error:.data.status.error, code:.data.code, message:.data.message, opc_request_id:.headers["opc-request-id"]}'{
"http_status": "200 OK",
"statement_id": "095865c4-27ce-41cc-99bb-67af1de760b2",
"state": "SUCCEEDED",
"error": null,
"code": null,
"message": null,
"opc_request_id": "sql-status-20261022-223517/A80E5E3A0BE5C2673C45E76C5A076B5F/890C178EA4CE5BC332681A546D3FB072"
}PENDINGRUNNINGSUCCEEDEDFAILEDCANCELLED
202 Accepted zurückgibt, den Status ab, bis die Anweisung einen Terminalstatus erreicht: SUCCEEDED, FAILED oder CANCELLED.
Anweisungsergebnisse anfordern
Wenn eine Anweisung abgeschlossen ist, können Sie ihr Ergebnis mit statement_id und Ergebnis chunk-index mit dem folgenden Endpunkt abrufen:
GET /20200129/computeClusters/<compute-cluster-key>/workbench/sql/statements/<statement-id>/result/chunks/<chunk-index>Legen Sie chunk-index fest, um zu bestimmen, welche Ergebnisse beim Aufrufen des Endpunkts abgerufen werden. chunk-index von 0 ruft das erste Ergebnis ab. Sie können die chunk-index des nächsten Ergebnisses bestimmen, indem Sie die next_chunk_index in der Antwort prüfen. Wenn next_chunk_index null ist, gibt dies an, dass keine zusätzlichen Ergebnis-Chunks vorhanden sind.
export CHUNK_INDEX="0"
export REQ_SUFFIX="$(date +%s)"Mit row_limit und byte_limit können Sie steuern, wie viele Ergebnisdaten der Service speichert und zurückgibt. Wenn eine der beiden Grenzwerte erreicht ist, kann die Antwort darauf hinweisen, dass das Ergebnis abgeschnitten wurde. Eine erfolgreiche Anweisung bedeutet nicht, dass alle Quellzeilen im Ergebnis beibehalten wurden.
In diesem Beispiel wird eine Anforderung für Anweisungsergebnisse gezeigt:
oci raw-request \
--target-uri "${BASE_URI}/20200129/computeClusters/${COMPUTE_CLUSTER_KEY}/workbench/sql/statements/${STATEMENT_ID}/result/chunks/${CHUNK_INDEX}" \
--http-method GET \
--request-headers "$(printf '{"opc-request-id":"sql-result-chunk-%s"}' "$REQ_SUFFIX")" \
--region "${REGION}" \
--auth security_token \
--profile "${PROFILE}" \
| jq '(.data.result // .data) as $result |
{
http_status: .status,
statement_id: .data.statement_id,
chunk_index: $result.chunk_index,
row_count: $result.row_count,
row_offset: $result.row_offset,
result: $result.data_array,
next_chunk_index: $result.next_chunk_index,
external_link_count: (($result.external_links // []) | length),
code: .data.code,
message: .data.message,
opc_request_id: .headers["opc-request-id"]
}'Die Antwort auf die oben genannten Beispiele sieht folgendermaßen aus:
{
"http_status": "200 OK",
"statement_id": null,
"chunk_index": 0,
"row_count": 1,
"row_offset": 0,
"result": [
[
"1"
]
],
"next_chunk_index": null,
"external_link_count": 0,
"code": null,
"message": null,
"opc_request_id": "sql-result-chunk-20261022-224623/A6702BBF95AEA1AA6D96EFA256B1062B/86AA007BC0A3E6824814EE1A7A246775"
}Wenn eine Anweisung abgeschlossen ist, enthält die Antwort den Anweisungsstatus und die Ergebnismetadaten. Wenn Sie INLINE für disposition angeben, gibt der Service Ergebnisdaten in der Antwort zurück. Verwenden Sie INLINE für kleine Ergebnisse, die eine Anwendung sofort verarbeiten kann. Wenn Sie EXTERNAL_LINKS angeben, speichert der Service das Ergebnis und gibt einen temporären Link zurück, anstatt die Ergebnisdaten in die Antwort aufzunehmen. Verwenden Sie EXTERNAL_LINKS für große Ergebnisse.
data_array: Ergebnisdaten, wenn das Ergebnis inline zurückgegeben wird. Dieser Wert ist Null, wenn Sie EXTERNAL_LINKS verwenden.external_links: Temporäre Links zu Ergebnisdaten, wenn Sie EXTERNAL_LINKS verwenden.row_countundbyte_count: Die Anzahl der Zeilen und Byte im zurückgegebenen Ergebnis-Chunk.next_chunk_index: Der Index des nächsten Ergebnis-Chunk, wenn mehr Ergebnisdaten verfügbar sind.truncated: Gibt an, ob der Service nur einen Teil des Ergebnisses beibehalten hat, weil der angeforderte Zeilen- oder Bytegrenzwert erreicht wurde.expires_at: Die Zeit, zu der beibehaltene Ergebnisdaten und temporäre externe Links ablaufen.
Weitergeleitete Auszüge stornieren
Sie können eine ausgeführte Anweisung abbrechen. Sie benötigen die statement_id für die Anweisung, die Sie abbrechen möchten.
POST /20200129/computeClusters/<compute-cluster-key>/workbench/sql/statements/<statement-id>/canceloci raw-request \
--target-uri "${BASE_URI}/20200129/computeClusters/${COMPUTE_CLUSTER_KEY}/workbench/sql/statements/${STATEMENT_ID}/cancel" \
--http-method POST \
--request-headers "$(printf '{"Content-Type":"application/json","opc-request-id":"sql-cancel-%s"}' "$REQ_SUFFIX")" \
--request-body '{}' \
--region "${REGION}" \
--auth security_token \
--profile "${PROFILE}" \
| jq '{http_status:.status, statement_id:.data.statement_id, cancel_state:.data.cancel_state, state:.data.status.state, error:.data.status.error, code:.data.code, message:.data.message, opc_request_id:.headers["opc-request-id"]}'{
"http_status": "200 OK",
"statement_id": "9b8ca043-5620-469a-b07c-51d5b99b9963",
"cancel_state": "COMPLETED",
"state": "CANCELED",
"error": null,
"code": null,
"message": null,
"opc_request_id": "sql-cancel-20261022-231732/1BA0029F78EFABC8F3A7D7D8F52E278F/CFB5C5994AF3861143602D08794A2628"
}Wenn der Abbruch abgeschlossen ist, gibt die API 200 OK zurück. Die Antwort enthält die Anweisungs-ID und den Status CANCELED.
statement_id abrufen:oci raw-request \
--target-uri "${BASE_URI}/20200129/computeClusters/${COMPUTE_CLUSTER_KEY}/workbench/sql/statements/${LONG_STATEMENT_ID}" \
--http-method GET \
--request-headers "$(printf '{"opc-request-id":"req-sql-canceled-status-%s"}' "$REQ_SUFFIX")" \
--no-retry \
--region "${REGION}" \
--auth security_token \
--profile "${PROFILE}" \
| jq '{http_status:.status, statement_id:.data.statement_id, state:.data.status.state, cancel_requested:.data.cancel_requested, error:.data.status.error, opc_request_id:.headers["opc-request-id"]}'{
"http_status": "200 OK",
"statement_id": "9b8ca043-5620-469a-b07c-51d5b99b9963",
"state": "CANCELED",
"cancel_requested": true,
"error": null,
"opc_request_id": "req-sql-canceled-status-20261022/727A96500CCB1BBCF311B91390F7370C/9231C1802E3466B9AF5FBDEA56D0A9EA"
}Katalog oder Schema angeben
Sie können einen Katalog, ein Schema oder beides angeben, wenn Sie eine SQL-Anweisung weiterleiten. Werte, die Sie in der Anforderung angeben, überschreiben den aktuellen Sessionkontext. Geben Sie Katalog und Schema an, um die Anweisung in einem bestimmten Katalog und Schema auszuführen.
{
"statement": "SELECT * FROM orders LIMIT 10",
"catalog": "sales_catalog",
"schema": "reporting",
"wait_timeout": "10s",
"on_wait_timeout": "CONTINUE",
"format": "JSON_ARRAY",
"disposition": "INLINE"
}Sie können nur catalog angeben, um einen Katalog auszuwählen. Um sicherzustellen, dass eine Anweisung ein bestimmtes Schema verwendet, geben Sie sowohl catalog als auch schema an.
Sie können nur schema angeben, um ein Schema im aktuellen Katalog auszuwählen. Sie können auch einen qualifizierten Schemanamen angeben, wie sales_catalog.reporting, wenn Sie catalog weglassen.
Wenn Sie catalog oder schema nicht angeben, verwendet die Anweisung den aktuellen Sessionkatalog und das aktuelle Schema. Wenn der angegebene Katalog oder das angegebene Schema nicht vorhanden ist oder der Aufrufer keinen Zugriff hat, kann die Anweisung mit dem Status FAILED abgeschlossen werden. Prüfen Sie status.state und status.error in jeder Antwort auf eine abgeschlossene Anweisung. Ungültige Syntax für Katalog- oder Schemafeld gibt 400 Bad Request zurück.
Benannte Paramater
Sie können benannte Parameter in einer SQL-Anweisung verwenden. Geben Sie einen Parameter in der Anweisung an, indem Sie einen Doppelpunkt gefolgt vom Parameternamen verwenden, wie :id. Positionsparameter, wie ?, werden nicht unterstützt. Geben Sie Parameterwerte im Array parameters an. Jeder Parameter enthält die folgenden Felder:
| Feld | Beschreibung |
|---|---|
name |
Eingabe erforderlich. Der Parametername ohne Doppelpunkt (:)-Präfix. |
value |
Eingabe erforderlich. Der Parameterwert. Geben Sie den Wert als Zeichenfolge an. |
type |
Optional. Ein Typhinweis für den Parameterwert. |
:id und :name bereit:{
"statement": "SELECT :id AS id, :name AS name",
"parameters": [
{
"name": "id",
"value": "42",
"type": "INT"
},
{
"name": "name",
"value": "example",
"type": "STRING"
}
],
"wait_timeout": "10s",
"on_wait_timeout": "CONTINUE",
"format": "JSON_ARRAY",
"disposition": "INLINE"
}Die API unterstützt den folgenden Parametertyphinweis:- Boolescher Wert: BOOLEAN
- Ganzzahl: BYTE, TINYINT, SHORT, SMALLINT, INT, INTEGER, LONG, BIGINT
- Numerisch: FLOAT, DOUBLE, DECIMAL, NUMERIC
- Datum und Uhrzeit: DATE, TIMESTAMP, TIMESTAMP_NTZ
- Zeichen: STRING, CHAR, VARCHAR
Fehlerbehebung bei API-Antworten für SQL-Anweisungen
| Antwort | Lösung |
|---|---|
400 Bad Request |
Stellen Sie sicher, dass die Anforderung eine unterstützte schreibgeschützte Anweisung und gültige Anforderungswerte enthält. |
401 oder 403 |
Prüfen Sie die OCI-Authentifizierung und Ihre Berechtigungen für das Compute-Cluster und die abgefragten Daten. |
404 Not Found |
Prüfen Sie die Region, den Compute-Clusterschlüssel, die Aufruferidentität und die Anweisungs-ID. |
503 Service Unavailable |
Warten Sie, bis das Compute-Cluster aktiv ist, und wiederholen Sie den Vorgang. |
Verbindung zu externen Anwendungen mit Spark Connect herstellen
Mit Spark Connect können Sie Spark-Code in einem Oracle AI Data Platform-Compute-Cluster aus einer unterstützten Python- oder Java-Anwendung ausführen.
Sie können von einer lokalen IDE oder einer externen Anwendung aus arbeiten, während das Cluster Ihre DataFrame-Vorgänge und Spark-SQL-Abfragen ausführt. Beispiel: Sie können eine Datentransformation lokal entwickeln, sie für Daten ausführen, die für das Cluster verfügbar sind, und die Ergebnisse in der Anwendung abrufen.
- Ein Compute-Cluster mit dem Status "Aktiv".
- Benutzen Sie Berechtigungen oder höher für das Cluster und die Daten, die Sie verwenden.
- Netzwerkzugriff auf den Hostnamen des Spark Connect-Clusters auf Port 443.
- Der Compute-Clusterschlüssel (ID). Sie finden dies auf der Registerkarte Details des Clusters unter "Allgemeine Informationen".
- Der Gatewayhostname für das Cluster. Sie finden den Hostnamen auf der Registerkarte Verbindungsdetails des Clusters unter JDBC-Treiber oder ODBC-Treiber.
- Ein OCI-Authentifizierungsprofil und ein kompatibler Spark Connect-Client.
AI Data Platform unterstützt Python- und Java-Clients und hat für jeden die folgenden Anforderungen:
| Client | Anforderungen |
|---|---|
| Python | Python 3.9-3.11, PySpark Connect 3.5.1 |
| Java | JDK 17, Maven 3.8 oder höher, Spark Connect JVM-Client 3.5.1 |
Verbindung zu Spark Connect mit einem Python-Client herstellen
Dieses Python-Beispiel enthält das Verbindungssetup, das zur Authentifizierung mit OCI und zum Erstellen einer Remote-Spark-Session erforderlich ist.
spark_connect_example.py und requirements.txt erforderlich, die in diesem Bundle angegeben sind: Spark-Connect-Beispiele.
Hinweis:
Im angegebenen Beispiel wird die anschließbare Ausführung für den dokumentierten Spark 3.5.1-Client deaktiviert:spark.client.disable_reattachable_execute() Behalten Sie diese Einstellung bei, wenn Sie das Beispiel anpassen.Verbindung zu Spark Connect mit einem Java-Client herstellen
Dieses Java-Beispiel enthält das Verbindungssetup, das zur Authentifizierung mit OCI und zum Erstellen einer Remote-Spark-Session erforderlich ist.
SparkConnectExample.java und pom.xml erforderlich, die in diesem Bundle angegeben sind: Spark-Connect-Beispiele.
Fehlerbehebung bei Spark Connect
In der bereitgestellten Tabelle werden allgemeine Probleme aufgeführt, die beim Konfigurieren von Spark Connect-Verbindungen zu Oracle AI Data Platform auftreten können, und es werden potenzielle Ursachen angegeben.
| Problem | Was zu überprüfen ist |
|---|---|
| Die Anwendung kann keine Verbindung herstellen | Vergewissern Sie sich, dass das Cluster aktiv ist und Ihre Umgebung den Gateway-Hostnamen auf Port 443 erreichen kann. |
| Authentifizierung fehlgeschlagen | Prüfen Sie den Pfad, den Profilnamen und die Zugangsdaten der OCI-Konfigurationsdatei. Zugangsdaten für abgelaufene Session aktualisieren. |
| Autorisierung nicht erfolgreich, oder die Ressource kann nicht gefunden werden | Prüfen Sie Hostname und Cluster-Schlüssel. Bestätigen Sie die Aktivierung des Mandanten und die Berechtigung zur Verwendung des Clusters. |
| Eine Abfrage kann nicht auf eine Tabelle zugreifen | Prüfen Sie den Katalog-, Schema- und Tabellennamen, und prüfen Sie, ob die authentifizierte Identität Zugriff auf die Daten hat. |
Python meldet ein fehlendes pyspark- oder oci-Modul
|
Installieren Sie die angegebenen Abhängigkeiten, und führen Sie das Beispiel mit .venv/bin/python aus.
|
| Python lädt eine unerwartete Spark-Version | Verwenden Sie den dokumentierten Befehl, während PYTHONPATH und SPARK_HOME entfernt werden. |
| Java meldet fehlende Abhängigkeit oder inkompatible Library | Befolgen Sie die Setupanweisungen, die mit dem Java-Bundle bereitgestellt werden, und verwenden Sie die angegebenen Abhängigkeitsversionen. |


