Data Catalog Oracle AI
Scopri come impostare e utilizzare Oracle AI Data Catalog (AICAT).
Argomenti
- Informazioni su Oracle AI Data Catalog
- Scegli database repository catalogo
- Abilita Oracle AI Data Catalog
- Registrare le credenziali di storage
- Registrare lo storage con i dati Iceberg esistenti
- Autenticazione e autorizzazione degli utenti
- Catalogo REST AICAT Iceberg
- Utilizzo di AICAT con i motori di query
Argomento padre: Lakehouse
Informazioni su Oracle AI Data Catalog
Oracle AI Data Catalog (AICAT) è un servizio di catalogo REST Iceberg gestito da Oracle. Il servizio catalogo è progettato per gestire i tavoli Iceberg in modo efficiente. Fornisce API per la gestione delle operazioni CRUD sulle tabelle, la gestione dei metadati e la gestione delle transazioni.
AICAT funziona all'interno di Oracle Autonomous AI Database ed è disponibile per tutti i database all'interno di tale tenancy. Il servizio catalogo utilizza lo schema di database tenant per memorizzare i metadati delle tabelle.
- Tipi di storage supportati
- Avvio rapido
- Abilitare l'accesso alle origini dati private da Autonomous AI Database
L'Autonomous AI Database da cui si accede a AICAT deve essere configurato per utilizzare un endpoint privato per poter comunicare con le origini di database privati. Altrimenti, quando si tenta di creare e testare una connessione di questo tipo, potrebbe verificarsi un errore di "connessione non riuscita".
Argomento padre: Oracle AI Data Catalog
Tipi di storage supportati
Oracle AI Data Catalog supporta i seguenti provider di storage:
Argomento padre: Informazioni su Oracle AI Data Catalog
Avvio rapido
AICAT dovrebbe essere abilitato su un Autonomous AI Database in una tenancy, con altri Autonomous AI Database nella tenancy che si connettono e lo utilizzano, in modo che tutti i database AI possano accedere allo stesso catalogo Iceberg, soggetti alle autorizzazioni degli utenti.
Tenere presente quanto riportato di seguito.
- Solo l'amministratore della tenancy o un utente con il ruolo ADMIN può impostare AICAT.
- Ogni tenant può avere più database. È necessario decidere il database che fungerà da database del catalogo. Sebbene sia possibile abilitare AICAT su qualsiasi Autonomous AI Database in una tenancy, Oracle consiglia di abilitarlo in un singolo database. Poiché il pattern di utilizzo del servizio catalogo è per lo più transazionale, si consiglia di utilizzare Autonomous AI Database il tipo di carico di lavoro Transaction Processing.
- Assicurarsi che la posizione di storage degli oggetti configurata per il servizio AICAT sia vuota e non venga utilizzata per altri scopi.
Il workflow è il seguente:
- Puoi abilitare AICAT in un'istanza Autonomous AI Database Serverless.
- AICAT espone le API del catalogo REST.
- Registrate le tavole Iceberg in AICAT.
- Utilizzare Spark per connettersi all'URL del catalogo.
- Metadati della tabella richieste dal motore di query.
- AICAT restituisce le posizioni dei metadati.
- Il motore legge i dati direttamente dallo storage degli oggetti.
Per impostare e utilizzare AICAT, effettuare le operazioni riportate di seguito:
| Task | Ulteriori informazioni |
| Scegliere un'istanza di Autonomous AI Database come database del catalogo. | Scegli database repository catalogo |
| Abilita AICAT mediante tag | Abilita Oracle AI Data Catalog |
| Registra metadati di memorizzazione per AICAT | Registra credenziali di storage |
| [Facoltativo] Registra archiviazione con dati Iceberg esistenti | Se si desidera registrare le tabelle Iceberg esistenti con AICAT, vedere Registrare lo storage con i dati Iceberg esistenti. |
| [Facoltativo] Autorizzare un utente del database con il ruolo AICAT_USER o PDB_DBA. Autenticare l'utente utilizzando una chiamata API token con le credenziali utente. | Autentica e autorizza utenti |
Argomento padre: Informazioni su Oracle AI Data Catalog
Abilita accesso a origini dati private da Autonomous AI Database
Quando Autonomous AI Database è configurato con un endpoint privato, è necessario instradare in modo esplicito la connettività in uscita tramite l'endpoint privato. Inoltre, è necessario impostare la risoluzione DNS appropriata e la configurazione della connessione per garantire la comunicazione sicura tra AICAT e il database.
Per configurare AICAT con l'accesso all'endpoint privato di Autonomous AI Database, devi instradare le connessioni in uscita da Autonomous AI Database tramite l'endpoint privato.
Procedere nel modo seguente:
- Per impostare la proprietà di instradamento, eseguire il login a SQL Web come utente ADMIN ed eseguire l'istruzione seguente:
ALTER DATABASE PROPERTY SET ROUTE_OUTBOUND_CONNECTIONS = 'PRIVATE_ENDPOINT';Nota
Se l'esecuzione di questo comando non riesce, contattare il supporto di Oracle Autonomous AI Database. - Per verificare che la configurazione del routing sia impostata correttamente, eseguire la seguente query:
SELECT *FROM DATABASE_PROPERTIESWHERE PROPERTY_NAME = 'ROUTE_OUTBOUND_CONNECTIONS';Il valore previsto è
PRIVATE_ENDPOINT.
Argomento padre: Informazioni su Oracle AI Data Catalog
Scegli database repository catalogo
È necessario creare o selezionare un'istanza di Autonomous AI Database esistente su cui verrà eseguito Oracle AI Data Catalog. Questa istanza di database verrà utilizzata come repository di metadati del catalogo.
- Se una tenancy dispone già del catalogo creato con un database centralizzato, tutti gli altri database tenant possono puntare al catalogo esistente nella tenancy.
- Se si desidera creare più cataloghi per un tenant, è consigliabile ottenere i dettagli sul catalogo esistente e utilizzare il catalogo centralizzato invece di consentire ai tenant di creare più cataloghi.
Argomento padre: Oracle AI Data Catalog
Abilita Oracle AI Data Catalog
Per abilitare Oracle AI Data Catalog (AICAT) su un'istanza Autonomous AI Database Serverless, è necessario impostare la tag OCI ADB$TOOLS su AI_CAT. È quindi possibile connettersi al servizio catalogo utilizzando l'URL del servizio generato.
Tenere presente quanto riportato di seguito.
- L'impostazione della tag OCI AI_CAT su un'istanza ADB-S abilita il servizio AI Data Catalog per tale database.
- Il servizio supporta un massimo di 32 ECPU nella release iniziale. Il consumo di ECPU viene fatturato alla tariffa standard di Autonomous AI Database quando le risorse di computazione del servizio catalogo sono attive e in uso. Vedere Informazioni sulla fatturazione del modello di computazione ECPU per informazioni sulla fatturazione ECPU per VM e risorse di computazione aggiuntive.
- Il servizio AICAT è configurato con un timeout di inattività predefinito di 2 ore (120 minuti). Questa configurazione mantiene il servizio prontamente disponibile e reattivo per i normali pattern di utilizzo evitando la fatturazione non necessaria quando il servizio è inattivo. Ciò garantisce inoltre che, quando il servizio rimane inattivo oltre il periodo di timeout inattività configurato, le risorse di computazione associate vengano arrestate automaticamente e non vengano più fatturate.
- Se si è verificato il timeout del servizio AICAT, qualsiasi richiesta successiva al servizio attiva automaticamente un riavvio del servizio catalogo. Nella maggior parte dei casi, il servizio diventa disponibile entro circa 30 secondi.
Puoi abilitare AICAT nei tipi di database Lakehouse e Autonomous Transaction Processing (ATP). Oracle consiglia di utilizzare i database ATP perché le operazioni del catalogo, ad esempio la gestione dei metadati, le chiamate API, i controlli di autorizzazione e gli aggiornamenti del catalogo, sarebbero ottimizzate meglio utilizzando ATP.
Per abilitare AICAT e ottenere l'URL dell'istanza:
- Eseguire il login a OCI e andare all'istanza Autonomous AI Database Serverless selezionata come repository di metadati del catalogo.
- Passare a Tag.
- Imposta il seguente tag:
- Nome chiave tag:
ADB$TOOLS - Valore tag:
AI_CAT
Ciò abilita AICAT per l'istanza Autonomous AI Database Serverless.
- Nome chiave tag:
- Per ottenere l'endpoint, andare a ADBS in OCI e selezionare la scheda Configurazione strumenti. Modificare l'URL visualizzato nel formato
<database name>/catalog.Ad esempio, modificare
https://test1234.adb.us-phoenix-1.oraclecloudapps.com/ords/apexinhttps://test1234.adb.us-phoenix-1.oraclecloudapps.com/catalog.
Viene visualizzata una schermata iniziale che elenca i passi da eseguire per iniziare a utilizzare AICAT insieme ai collegamenti agli argomenti della Guida.
Argomento padre: Oracle AI Data Catalog
Registra credenziali di storage
Per registrare lo storage, utilizzare la procedura ORACLE_AI_DATA_CATALOG.REGISTER_STORAGE_<VENDOR>() PL/SQL.
Tenere presente che il chiamante deve essere un utente ADMIN o un utente al quale è assegnato il ruolo PDB_DBA. Per ulteriori informazioni sulla concessione di ruoli e l'aggiunta o l'aggiornamento dei privilegi per un utente, vedere Gestisci ruoli e privilegi utente in Autonomous AI Database.
Oracle AI Data Catalog supporta i seguenti provider di storage:
Per aggiornare le credenziali di storage, vedere Aggiorna credenziali di storage. Se si desidera annullare la registrazione delle credenziali di storage, vedere Annulla registrazione credenziali di storage.
Oracle Cloud Infrastructure con compatibilità S3
Di seguito è riportata una procedura di esempio per registrare il warehouse per lo storage compatibile S3 OCI.
begin
oracle_ai_data_catalog.register_storage_oci(
p_warehouse => 's3://<bucket>',
p_endpoint => 'https://<namespace>.compat.objectstorage.<region>.oci.customer-oci.com',
p_region => '<region>',
p_access_key => '<access-key-id>',
p_secret_key => '<secret-key-id>'
);
end;
/Per informazioni sul formato dell'endpoint di storage, vedere Supporto dello stile hosted API di compatibilità Amazon S3 nello storage degli oggetti.
Vedere le istruzioni in https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/managingcredentials.htm#create-secret-key su come ottenere la chiave di accesso e la chiave segreta.
Storage di Azure (ADLS e BLOB)
Ecco una procedura di esempio per registrare il tuo magazzino per Azure ADLS Storage:
begin oracle_ai_data_catalog.register_storage_azure(
p_warehouse => 'abfss://<container>',
p_endpoint => 'https://<account>.dfs.core.windows.net',
p_storage_account_name => '<storage_account_name>',
p_storage_account_key => '<storage_account_key>'
);
end;
/Di seguito è riportata una procedura di esempio per registrare il warehouse per Azure BLOB Storage.
begin oracle_ai_data_catalog.register_storage_azure(
p_warehouse => 'abfss://<container>',
p_endpoint => 'https://<account>.blob.core.windows.net',
p_storage_account_name => '<storage_account_name>',
p_storage_account_key => '<storage_account_key>'
);
end;
/ZFS Storage
Di seguito è riportata una procedura di esempio per registrare il warehouse per lo storage ZFS.
begin
oracle_ai_data_catalog.register_storage_zfs(
p_warehouse => 's3a://icebergs3/iceberg_warehouse_s3/',
p_endpoint => 'https://<account>.us.oracle.com',
p_accesskey => '<access-key-id>',
p_secret_key => '<secret-key-id>'
);
end;
/Argomento padre: Oracle AI Data Catalog
Aggiorna credenziali storage
Per aggiornare le credenziali di memorizzazione, utilizzare la procedura ORACLE_AI_DATA_CATALOG.UPDATE_STORAGE_CREDENTIAL_<VENDOR>() PL/SQL.
Tenere presente che il chiamante deve essere un utente ADMIN o un utente al quale è assegnato il ruolo PDB_DBA. Per ulteriori informazioni sulla concessione di ruoli e l'aggiunta o l'aggiornamento dei privilegi per un utente, vedere Gestisci ruoli e privilegi utente in Autonomous AI Database.
Oracle AI Data Catalog supporta i seguenti provider di storage:
Se si desidera annullare la registrazione delle credenziali di memorizzazione, utilizzare la procedura UNREGISTER_STORAGE_CREDENTIAL. Vedere Annulla registrazione credenziali di storage.
Oracle Cloud Infrastructure con compatibilità S3
Di seguito è riportata una procedura di esempio per aggiornare le credenziali per lo storage compatibile S3 OCI.
BEGIN
oracle_ai_data_catalog.update_storage_credential_oci(
p_access_key => '<value>',
p_secret_key => '<value>'
);
END;
/Storage di Azure (ADLS e BLOB)
Di seguito è riportata una procedura di esempio per aggiornare le credenziali per Azure Storage.
BEGIN
oracle_ai_data_catalog.update_storage_credential_azure(
p_storage_account_name => '<value>',
p_storage_account_key => '<value>'
);
END;
/ZFS Storage
Di seguito è riportata una procedura di esempio per aggiornare le credenziali per Azure Storage.
BEGIN
oracle_ai_data_catalog.update_storage_credential_zfs(
p_access_key => '<value>',
p_secret_key => '<value>'
);
END;
/Argomento padre: Registra credenziali di storage
Annulla registrazione credenziali di storage
Per annullare la registrazione delle credenziali di storage, utilizzare la procedura ORACLE_AI_DATA_CATALOG.UNREGISTER_STORAGE_CREDENTIAL(...) PL/SQL.
Tenere presente che il chiamante deve essere un utente ADMIN o un utente al quale è assegnato il ruolo PDB_DBA.
Eseguire il comando seguente:
BEGIN
oracle_ai_data_catalog.unregister_storage_credential;
END;
/Se si desidera riutilizzare AICAT, utilizzare la procedura UPDATE_STORAGE_CREDENTIAL_<VENDOR>(). Vedere Aggiorna credenziali storage.
Argomento padre: Registra credenziali di storage
Registra archiviazione con dati Iceberg esistenti
AICAT supporta la registrazione delle tabelle Apache Iceberg esistenti memorizzate nello storage degli oggetti. Una volta registrati, i metadati della tabella Iceberg e le definizioni delle tabelle diventano individuabili e accessibili tramite AICAT.
Prima di registrare le tabelle Iceberg in AICAT, assicurarsi che:
- AICAT è già abilitato in un'istanza serverless di Autonomous Database. Vedere Abilita Oracle AI Data Catalog.
- Si è connessi all'istanza serverless di Autonomous Database come utente ADMIN o utente con il ruolo PDB_DBA o AICAT_USER.
- Hai registrato il tuo storage con AICAT. Vedere Registra credenziali di storage.
- Il bucket di storage degli oggetti contiene dati e metadati della tabella Iceberg validi nel formato corretto.
Ad esempio:
Bucket/Warehouse: N-Warehouse -NAMESPACE -TABLE_NAME_NAMESPACE - data - parquet files. - metadata - json filesQui:
NAMESPACErappresenta lo spazio di nomi/schema Iceberg.TABLE_NAME_NAMESPACErappresenta la tavola Icebergdatacontiene i file di dati della tabella (in genere Parquet)metadatacontiene i metadati Iceberg e i file JSON snapshot necessari per la gestione delle tabelle e l'esecuzione di query
- Si dispone delle autorizzazioni di accesso al bucket e agli oggetti.
Per registrare le tabelle Iceberg esistenti con AICAT:
- Connettersi all'istanza AICAT utilizzando le credenziali di autenticazione del database.
Utilizzare il comando seguente per generare un token di accesso:
TOKEN=$(curl -k -s --location '<URI>/v1/auth/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'client_id=<dbUser>' \ --data-urlencode 'client_secret=<dbPwd>' \ --data-urlencode 'scope=PRINCIPAL_ROLE:ALL' | jq -r '.access_token')
Qui,
<URI>è l'URL del server catalogo.<dbUser>è il nome utente del database.<dbPwd>è la password del database.
Se il valore del token restituisce
null, eseguire di nuovo la richiesta utilizzando l'opzione-vper l'output descrittivo per risolvere i problemi di autenticazione o connettività.Esempio:
curl -v -k --location '<URI>/v1/auth/token' - Determinare la posizione del file di metadati Iceberg per la tabella che si desidera registrare nel catalogo. È possibile ottenere la posizione dei metadati in uno dei modi riportati di seguito.
- Caricare i metadati della tabella da un server catalogo precedente.
- Sfoglia manualmente il bucket del warehouse o dello storage degli oggetti e identifica il file JSON dei metadati Iceberg corrente.
Ad esempio:Namespace : SILVER Table : COMPETITOR_PRICING_SILVER Metadata Location : s3://0A-Warehouse/SILVER/COMPETITOR_PRICING_SILVER/metadata/00002-f2662b11-3268-4792-90f9-b8f4b851d629.metadata.jsonIl file JSON dei metadati contiene le informazioni sulla definizione della tabella Iceberg, lo schema, gli snapshot, i file manifesto e lo stato della tabella necessarie per la registrazione del catalogo.
Per creare lo spazio di nomi
SILVERse non esiste già, utilizzare il comando seguente:curl -k --location '<URI>/v1/namespaces' \ --header "Authorization: Bearer $TOKEN" \ --header 'Content-Type: application/json' \ --data '{"namespace": ["SILVER"], "properties": {}}' - Per registrare la tabella, eseguire il comando seguente:
curl -k --location '<URI>/v1/namespaces/SILVER/register' \ --header 'Content-Type: application/json' \ --header "Authorization: Bearer $TOKEN" \ --data '{ "name":"COMPETITOR_PRICING_SILVER", "metadata-location": "s3://0A-Warehouse/SILVER/COMPETITOR_PRICING_SILVER/metadata/00002-f2662b11-3268-4792-90f9-b8f4b851d629.metadata.json", "overwrite": false }' - Per caricare la tabella appena registrata, eseguire il comando seguente:
curl -k --location '<URI>/v1/namespaces/SILVER/tables/COMPETITOR_PRICING_SILVER' \ --header "Authorization: Bearer $TOKEN" \ --header 'Content-Type: application/json'
- Analogamente, registrare altre tabelle.
Argomento padre: Oracle AI Data Catalog
Autentica e autorizza utenti
Per consentire a un utente del database di accedere al servizio AICAT (vedere Scegli database repository catalogo), l'utente deve essere un utente ADMIN oppure è necessario autorizzare l'utente con il ruolo AICAT_USER o PDB_DBA.
È possibile autenticare gli utenti utilizzando una chiamata API token con credenziali utente. Per ottenere il token di accesso, inviare la richiesta seguente:
POST https://public_lb_host/catalog/v1/auth/token
Parametro di richiesta di esempio che utilizza cURL:
curl -k -s --location '<URI>/catalog/v1/auth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=<dbUser>' \
--data-urlencode 'client_secret=<dbPwd>' \
--data-urlencode 'scope=PRINCIPAL_ROLE:ALL' | jq -r '.access_token'
Alla scadenza del token, si riceverà una risposta 401. Utilizzare lo stesso endpoint per ottenere un nuovo token.
Di seguito è riportato un token di risposta di esempio.
{
"access_token": "<token>",
"issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
"token_type": "bearer",
"expires_in": 3600
}Utilizzare il token ottenuto come token Bearer nell'intestazione di autorizzazione:
Authorization: Bearer <your_token>Per informazioni dettagliate su ciascun endpoint REST API catalogo, vedere API REST per Oracle AI Data Catalog.
Argomento padre: Oracle AI Data Catalog
Catalogo REST AICAT Iceberg
Il catalogo REST Iceberg AICAT è il catalogo Iceberg predefinito basato su REST incorporato in AICAT. È progettato per gestire in modo efficiente le tabelle Iceberg fornendo API REST per le operazioni del ciclo di vita delle tabelle, tra cui creazione, lettura, aggiornamento ed eliminazione (CRUD), nonché la gestione dei metadati e delle transazioni. Il catalogo REST AICAT Iceberg segue la specifica API standard del catalogo REST Apache Iceberg. È necessario essere un utente ADMIN o un utente a cui è stato concesso il ruolo PDB_DBA o AICAT_USER.
Per informazioni dettagliate su ciascun endpoint REST API catalogo, vedere API REST per Oracle AI Data Catalog.
Argomento padre: Oracle AI Data Catalog
Utilizzo di AICAT con i motori di query
AICAT si integra con più motori di query per richiedere e recuperare informazioni. Puoi usare AICAT con motori di query come Apache Spark, aggiungere tabelle esterne su tabelle AICAT, montare AICAT sul catalogo DBMS e creare tabelle Apache Iceberg utilizzando Oracle Data Transforms.
In caso di problemi, inoltrare una richiesta di assistenza al Supporto Oracle Cloud o contattare il rappresentante dell'assistenza.
Esegui query su AICAT utilizzando Apache Spark
- Scaricare ed estrarre il file binario di runtime
spark-3.5.6-bin-hadooptgz. - Aggiungere
iceberg-aws-bundle-1.9.2.jarnella directoryspark-3.5.6-bin-hadoop3/jars. - Dalla directory radice (spark-3.5.6-bin-hadoop3) eseguire quanto segue.
Per configurare Spark con OCI S3:
bin/spark-shell \ --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0 \ --conf spark.sql.catalog.aicat=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.aicat.type=rest \ --conf spark.sql.catalog.aicat.uri=http://<host>:<port>/catalog \ --conf spark.sql.catalog.aicat.warehouse=aicat_iceberg_rest_catalog \ --conf spark.sql.catalog.aicat.s3.access-key-id=<s3AccessKeyId> \ --conf spark.sql.catalog.aicat.s3.secret-access-key=<s3SecretAccessKey> \ --conf spark.sql.catalog.aicat.rest.auth.type=oauth2 \ --conf spark.sql.catalog.aicat.oauth2-server-uri=http://<host>:<port>/catalog/v1/auth/token \ --conf spark.sql.catalog.aicat.credential=<dbusername>:<dbpassword> \ --conf spark.sql.catalog.aicat.scope=PRINCIPAL_ROLE:ALL \ --conf spark.driver.extraJavaOptions=" -Dhttp.proxyHost=www-proxy-hqdc.us.oracle.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=www-proxy-hqdc.us.oracle.com -Dhttps.proxyPort=80"Per creare la chiave segreta e la chiave di accesso segreta, vedere Creazione di una chiave segreta cliente.
Per configurare Spark con Azure:
bin/spark-shell \ --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.10.0 \ --conf spark.sql.catalog.aicat=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.aicat.type=rest \ --conf spark.sql.catalog.aicat.uri=http://<host>:<port>/catalog \ --conf spark.sql.catalog.aicat.warehouse=oadc_iceberg_rest_catalog \ --conf spark.sql.catalog.aicat.rest.auth.type=oauth2 \ --conf spark.sql.catalog.aicat.oauth2-server-uri=http://<host>:<port>/catalog/v1/auth/token \ --conf spark.sql.catalog.aicat.credential=<username>:<password> \ --conf spark.sql.catalog.aicat.scope=PRINCIPAL_ROLE:ALL \ --conf spark.sql.catalog.aicat.io-impl=org.apache.iceberg.azure.adlsv2.ADLSFileIO \ --conf spark.sql.catalog.aicat.adls.account=<accountName> \ --conf spark.sql.catalog.aicat.adls.endpoint=https://<accountName>.blob.core.windows.net/<container> \ --conf spark.sql.catalog.aicat.adls.auth.shared-key.account.name=<accountName> \ --conf spark.sql.catalog.aicat.adls.auth.shared-key.account.key=<accountKey> \ --conf spark.driver.extraJavaOptions=" -Dhttp.proxyHost=www-proxy-hqdc.us.oracle.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=www-proxy-hqdc.us.oracle.com -Dhttps.proxyPort=80" - Eseguire uno dei seguenti comandi SQL Spark:
spark.sql("SHOW NAMESPACES IN aicat").show()spark.sql("CREATE NAMESPACE IF NOT EXISTS aicat.`KBNSXI`").show()spark.sql("CREATE TABLE IF NOT EXISTS aicat.`KBNSXI`.TABLE2 (name STRING, add STRING)").show()spark.sql("INSERT INTO aicat.`KBNSXI`.TABLE2 VALUES ('John Doe', 'USA, 12345')").show()spark.sql("SELECT * FROM aicat.`KBNSXI`.TABLE2").show()
Aggiungi tabelle esterne su tabelle iceberg AICAT
Per utilizzare le tabelle esterne, ogni oggetto catalogo deve essere identificato utilizzando un nome completamente qualificato nel formato <catalog_name>.<namespace>.<table>.
Aprire il foglio di lavoro SQL per l'istanza di database AI ed eseguire le operazioni riportate di seguito.
-- setup ACL Rules --
-- for XT to communicate to ai catalog instance
-- for XT to communicate to object storage bucket, OCI in this example.
BEGIN
dbms_network_acl_admin.append_host_ace(
host => '*.oraclecloudapps.com',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'ADMIN',
principal_type => xs_acl.ptype_db));
dbms_network_acl_admin.append_host_ace(
host => '*.oci.customer-oci.com',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'ADMIN',
principal_type => xs_acl.ptype_db));
END;
/
-- create storage and catalog access credentials --
begin
dbms_cloud.create_credential(
credential_name => '<catalogAuthCreds>',
username => '<dbUserName>',
password => '<dbUserPwd>'
);
end;
/
begin
dbms_cloud.create_credential(
credential_name => '<storageCredentialName>',
username => '<s3accessKey>',
password => '<s3secretKey>'
);
end;
/
-- XT Creation with AI Cat Syntax --
-- <catalogURI> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog
-- <authUri> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog/v1/auth/token
begin
dbms_cloud.create_external_table(
table_name => '<extTableName>',
credential_name => '<storageCredentialName>',
format => '{
"access_protocol": {
"protocol_type": "iceberg",
"protocol_config": {
"iceberg_catalog_type": "oracle_ai_data_catalog",
"rest_catalog_endpoint":"<catalogURI>",
"rest_authentication": {
"rest_auth_cred": "<catalogAuthCreds>",
"rest_auth_endpoint":"<authUri>"
},
"table_path": ["<namespaceName>", "<tableName>"]
}
}
}'
);
end;
/
select * from <extTableName>;
Per ulteriori informazioni, vedere Tabelle di Apache Iceberg di Query.
Esegui MOUNT e query AICAT nel catalogo DBMS
Aprire il foglio di lavoro SQL per l'istanza di database AI ed eseguire le operazioni riportate di seguito.
-- setup ACL Rules --
-- for XT to communicate to ai catalog instance
-- for XT to communicate to object storage bucket, OCI in this example.
BEGIN
dbms_network_acl_admin.append_host_ace(
host => '*.oraclecloudapps.com',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'ADMIN',
principal_type => xs_acl.ptype_db));
dbms_network_acl_admin.append_host_ace(
host => '*.oci.customer-oci.com',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'ADMIN',
principal_type => xs_acl.ptype_db));
END;
/
-- create bearer token and catalog access credentials --
-- <authUri> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog/v1/auth/token
BEGIN
DBMS_SHARE.CREATE_BEARER_TOKEN_CREDENTIAL(
CREDENTIAL_NAME => '<bearerTokenCredName>',
BEARER_TOKEN => 'BEARER_TOKEN',
TOKEN_ENDPOINT => '<authUri>',
CLIENT_ID => '<dbUserName>',
CLIENT_SECRET => '<dbUserPwd>',
TOKEN_SCOPE => 'PRINCIPAL_ROLE:ALL'
);
END;
/
begin
dbms_cloud.create_credential(
credential_name => '<storageCredentialName>',
username => '<s3accessKey>',
password => '<s3secretKey>'
);
end;
/
-- XT Creation with AI Cat Syntax --
-- <catalogURIForIceberg> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog/v1
-- <authUri> eg: https://<dbIdentifierString>.adb.<region>.oraclecloudapps.com/catalog/v1/auth/token
-- DBMS_CATALOG with AI CAT --
BEGIN
dbms_catalog.mount_iceberg(
catalog_name => '<catalogName>',
endpoint => '<catalogURIforIceberg>',
catalog_credential => '<bearerTokenCredentialName>',
data_storage_credential => '<storageCredentialName>',
catalog_type => 'ICEBERG_ORACLE');
END;
/
-- sample queries once catalog is mounted
-- show mounted catalogs
SELECT c.catalog_name AS mounted_catalog_name, c.catalog_type AS mounted_catalog_type
FROM user_mounted_catalogs c
ORDER BY c.catalog_name;
-- show schemas
select schema_name from dbms_catalog.get_schemas('<catalogName>');
-- show tables
select table_name from dbms_catalog.get_tables('<catalogName>', '<schemaName>');
-- query existing tables
select FIRST_NAME, LAST_NAME from "<schemaName>"."<tableName>"@<catalogName> where rownum < 10;
-- create new table
CREATE ICEBERG TABLE "<schemaName>"."<tableName>"
( type STRING,
address STRING
)
WITHIN CATALOG "<catalogName>"
STORAGE LOCATION "s3://<ociBucketNameUsedInStep#2>/<schemaName>/<tableName>/";
-- insert into table;
create table TESTLOCAL (type varchar2(10), address varchar2(10));
insert into TESTLOCAL values ('Alan', 'Matthews');
commit;
-- insert into iceberg table via ai catalog from local table
INSERT INTO "<schemaName>"."<tableName>"@<catalogName> select * from TESTLOCAL;
-- query the table in ai cat
select * from "<schemaName>"."<tableName>"@<catalogName>;
select DBMS_CATALOG.GENERATE_TABLE_SELECT('<catalogName>', '"<schemaName>"', '"<tableName>"') from dual;
Usa AICAT come fornitore di cataloghi nelle trasformazioni dei dati Oracle
È possibile utilizzare Trasformazioni dati per connettersi al catalogo REST AICAT e caricare i dati nelle tabelle di Apache Iceberg. Per informazioni, vedere Creazione di una connessione Apache Iceberg mediante Oracle AI Data Catalog.
Argomento padre: Oracle AI Data Catalog