Catálogo de datos de Oracle AI
Obtén más información sobre cómo configurar y utilizar Oracle AI Data Catalog (AICAT).
Temas
- Acerca de Oracle AI Data Catalog
- Selección de la base de datos del repositorio del catálogo
- Activación de Oracle AI Data Catalog
- Registro de credenciales de almacenamiento
- Registro del almacenamiento con datos de iceberg existentes
- Autenticación y autorización de usuarios
- Catálogo REST de Iceberg de AICAT
- Uso de AICAT con motores de consulta
Tema principal: Lakehouse
Acerca de Oracle AI Data Catalog
Oracle AI Data Catalog (AICAT) es un servicio de catálogo REST de Iceberg gestionado por Oracle. El servicio de catálogo está diseñado para gestionar mesas Iceberg de manera eficiente. Proporciona API para manejar operaciones CRUD en tablas, gestionar metadatos y manejar transacciones.
AICAT funciona dentro de Oracle Autonomous AI Database y está disponible para todas las bases de datos de ese arrendamiento. El servicio de catálogo utiliza el esquema de base de datos de inquilino para almacenar los metadatos de las tablas.
- Tipos de almacenamiento admitidos
- Inicio rápido
- Activar acceso a orígenes de datos privados desde una base de datos de IA autónoma
La base de datos de IA autónoma desde la que accede a AICAT debe estar configurada para utilizar un punto final privado para poder comunicarse con orígenes de base de datos privados. De lo contrario, al intentar crear y probar una conexión de este tipo, es posible que aparezca el error "failed to connect".
Tema principal: Oracle AI Data Catalog
Tipos de almacenamiento admitidos
Oracle AI Data Catalog soporta los siguientes proveedores de almacenamiento:
Tema principal: Acerca de Oracle AI Data Catalog
Inicio rápido
AICAT está diseñado para activarse en una base de datos de IA autónoma en un arrendamiento, con otras bases de datos de IA autónomas en el arrendamiento conectándose a ella y utilizándola, para que todas las bases de datos de IA puedan acceder al mismo catálogo de Iceberg, sujeto a los permisos de usuario.
Tenga en cuenta lo siguiente:
- Solo el administrador del arrendamiento o un usuario con el rol ADMIN pueden configurar AICAT.
- Cada inquilino puede tener varias bases de datos. Debe decidir la base de datos que servirá como base de datos del catálogo. Aunque es posible activar AICAT en cualquier base de datos de IA autónoma de un arrendamiento, Oracle recomienda que se active en una sola base de datos. Dado que el patrón de uso del servicio de catálogo es principalmente transaccional, recomendamos que la base de datos de IA autónoma utilice el tipo de carga de trabajo Procesamiento de transacciones.
- Asegúrese de que la ubicación de Object Storage que configure para el servicio AICAT esté vacía y no se utilice para ningún otro fin.
El flujo de trabajo es el siguiente:
- Puede activar AICAT en una instancia sin servidor de base de datos de IA autónoma.
- AICAT muestra las API del catálogo REST.
- Usted registra mesas Iceberg en AICAT.
- Utilice Spark para conectarse a la URL del catálogo.
- El motor de consultas solicita metadatos de tabla.
- AICAT devuelve ubicaciones de metadatos.
- El motor lee los datos directamente desde Object Storage.
Siga estos pasos para configurar y utilizar AICAT:
| Tarea | Más información |
| Seleccione una instancia de base de datos de IA autónoma como base de datos de catálogo. | Seleccionar base de datos de repositorio de catálogo |
| Habilitar AICAT usando etiquetas | Activar Oracle AI Data Catalog |
| Registrar metadatos de almacenamiento para AICAT | Registrar credenciales de almacenamiento |
| [Opcional] Registrar almacenamiento con datos de iceberg existentes | Si desea registrar tablas Iceberg existentes con AICAT, consulte Registro de almacenamiento con datos Iceberg existentes. |
| [Opcional] Autorice a un usuario de base de datos con el rol AICAT_USER o PDB_DBA. Autenticar el usuario mediante una llamada de API de token con credenciales de usuario. | Autenticación y Autorización de Usuarios |
Tema principal: Acerca de Oracle AI Data Catalog
Activar acceso a orígenes de datos privados desde una base de datos de IA autónoma
Cuando la base de datos de IA autónoma está configurada con un punto final privado, debe enrutar explícitamente la conectividad saliente a través del punto final privado. Además, debe establecer una resolución de DNS y una configuración de conexión adecuadas para garantizar una comunicación segura entre AICAT y la base de datos.
Para configurar AICAT con acceso al punto final privado de la base de datos de IA autónoma, debe enrutar las conexiones salientes desde la base de datos de IA autónoma a través del punto final privado.
Realice lo siguiente:
- Para definir la propiedad de direccionamiento, conéctese a SQL Web como usuario ADMIN y ejecute la siguiente sentencia:
ALTER DATABASE PROPERTY SET ROUTE_OUTBOUND_CONNECTIONS = 'PRIVATE_ENDPOINT';Nota
Si este comando no se ejecuta, póngase en contacto con el soporte de Oracle Autonomous AI Database. - Para verificar que la configuración de enrutamiento está definida correctamente, ejecute la siguiente consulta:
SELECT *FROM DATABASE_PROPERTIESWHERE PROPERTY_NAME = 'ROUTE_OUTBOUND_CONNECTIONS';El valor esperado es
PRIVATE_ENDPOINT.
Tema principal: Acerca de Oracle AI Data Catalog
Seleccionar base de datos de repositorio de catálogo
Debe crear o seleccionar una instancia de base de datos de IA autónoma existente en la que se ejecutará Oracle AI Data Catalog. Esta instancia de base de datos se utilizará como repositorio de metadatos del catálogo.
- Si un arrendamiento ya tiene el catálogo creado con una base de datos centralizada, el resto de bases de datos de inquilinos pueden apuntar al catálogo existente en el arrendamiento.
- Si desea crear varios catálogos para un inquilino, le recomendamos que obtenga detalles sobre el catálogo existente y utilice el catálogo centralizado en lugar de permitir que los inquilinos creen varios catálogos.
Tema principal: Oracle AI Data Catalog
Activar Oracle AI Data Catalog
Para activar Oracle AI Data Catalog (AICAT) en una instancia autónoma de AI Database sin servidor, debe definir la etiqueta OCI ADB$TOOLS en AI_CAT. A continuación, puede conectarse al servicio de catálogo mediante la URL de servicio generada.
Tenga en cuenta lo siguiente:
- La configuración de la etiqueta de OCI AI_CAT en una instancia de ADB-S permite el servicio AI Data Catalog para esa base de datos.
- El servicio admite hasta 32 ECPU en la versión inicial. El consumo de ECPU se factura al ratio estándar de base de datos de IA autónoma cuando los recursos informáticos del servicio de catálogo están activos y en uso. Consulte Información de facturación del modelo de recursos informáticos de ECPU para obtener información sobre la facturación de ECPU para máquinas virtuales y recursos informáticos adicionales.
- El servicio AICAT se configura con un tiempo de espera inactivo predeterminado de 2 horas (120 minutos). Esta configuración mantiene el servicio disponible y receptivo para los patrones de uso normales, al tiempo que evita la facturación innecesaria cuando el servicio está inactivo. Esto también garantiza que cuando el servicio permanezca inactivo más allá del período de tiempo de espera inactivo configurado, los recursos informáticos asociados se detengan automáticamente y ya no se facturen.
- Si el servicio AICAT ha sufrido un timeout, cualquier solicitud posterior al servicio activa automáticamente un reinicio del servicio de catálogo. En la mayoría de los casos, el servicio está disponible en aproximadamente 30 segundos.
Puede activar AICAT en los tipos de base de datos Lakehouse y Autonomous Transaction Processing (ATP). Oracle recomienda utilizar bases de datos ATP porque las operaciones de catálogo, como la gestión de metadatos, las llamadas de API, las comprobaciones de autorización y las actualizaciones de catálogo, se optimizarían mejor mediante ATP.
Para activar AICAT y obtener la URL de la instancia:
- Conéctese a OCI y vaya a la instancia de Autonomous AI Database Serverless que ha seleccionado como repositorio de metadatos del catálogo.
- Vaya a Etiquetas.
- Defina la siguiente etiqueta:
- Nombre de clave de etiqueta:
ADB$TOOLS - Valor de etiqueta:
AI_CAT
Esto permite AICAT para la instancia de Autonomous AI Database Serverless.
- Nombre de clave de etiqueta:
- Para obtener el punto final, vaya a ADBS en OCI y seleccione el separador Configuración de herramientas. Edite la URL mostrada con el formato
<database name>/catalog.Por ejemplo, cambie
https://test1234.adb.us-phoenix-1.oraclecloudapps.com/ords/apexahttps://test1234.adb.us-phoenix-1.oraclecloudapps.com/catalog.
Aparece una pantalla de presentación que muestra los pasos que debe seguir para comenzar a utilizar AICAT junto con enlaces a los temas de ayuda.
Tema principal: Oracle AI Data Catalog
Registrar credenciales de almacenamiento
Para registrar el almacenamiento, utilice el procedimiento ORACLE_AI_DATA_CATALOG.REGISTER_STORAGE_<VENDOR>() de PL/SQL.
Tenga en cuenta que el invocador debe ser un usuario ADMIN o un usuario con el rol PDB_DBA asignado. Consulte Gestión de roles y privilegios de usuario en la base de datos de IA autónoma para obtener más información sobre cómo otorgar roles y agregar o actualizar privilegios para un usuario.
Oracle AI Data Catalog soporta los siguientes proveedores de almacenamiento:
- Compatibilidad de Oracle Cloud Infrastructure con S3
- Almacenamiento de Azure (ADLS y BLOB)
- ZFS Storage
Para actualizar las credenciales de almacenamiento, consulte Actualización de credenciales de almacenamiento. Si desea anular el registro de las credenciales de almacenamiento, consulte Anular Registro de Credenciales de Almacenamiento.
Compatibilidad de Oracle Cloud Infrastructure con S3
A continuación se muestra un procedimiento de ejemplo para registrar el almacén para el almacenamiento compatible con OCI S3:
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;
/Para obtener información sobre el formato del punto final de almacenamiento, consulte Soporte de estilo alojado de la API de compatibilidad de Amazon S3 en Object Storage.
Consulte las instrucciones en https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/managingcredentials.htm#create-secret-key sobre cómo obtener la clave de acceso y la clave secreta.
Almacenamiento de Azure (ADLS y BLOB)
A continuación se muestra un ejemplo de procedimiento para registrar el almacén para 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;
/A continuación se muestra un ejemplo de procedimiento para registrar su almacén para 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
A continuación, se muestra un ejemplo de procedimiento para registrar el almacén para el almacenamiento de 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;
/Tema principal: Oracle AI Data Catalog
Actualizar credenciales de almacenamiento
Para actualizar las credenciales de almacenamiento, utilice el procedimiento ORACLE_AI_DATA_CATALOG.UPDATE_STORAGE_CREDENTIAL_<VENDOR>() de PL/SQL.
Tenga en cuenta que el invocador debe ser un usuario ADMIN o un usuario con el rol PDB_DBA asignado. Consulte Gestión de roles y privilegios de usuario en la base de datos de IA autónoma para obtener más información sobre cómo otorgar roles y agregar o actualizar privilegios para un usuario.
Oracle AI Data Catalog soporta los siguientes proveedores de almacenamiento:
- Compatibilidad de Oracle Cloud Infrastructure con S3
- Almacenamiento de Azure (ADLS y BLOB)
- ZFS Storage
Si desea anular el registro de las credenciales de almacenamiento, utilice el procedimiento UNREGISTER_STORAGE_CREDENTIAL. Consulte Unregister Storage Credentials.
Compatibilidad de Oracle Cloud Infrastructure con S3
A continuación, se muestra un procedimiento de ejemplo para actualizar credenciales para el almacenamiento compatible con OCI S3:
BEGIN
oracle_ai_data_catalog.update_storage_credential_oci(
p_access_key => '<value>',
p_secret_key => '<value>'
);
END;
/Almacenamiento de Azure (ADLS y BLOB)
A continuación, se muestra un procedimiento de ejemplo para actualizar credenciales para Azure Storage:
BEGIN
oracle_ai_data_catalog.update_storage_credential_azure(
p_storage_account_name => '<value>',
p_storage_account_key => '<value>'
);
END;
/ZFS Storage
A continuación, se muestra un procedimiento de ejemplo para actualizar credenciales para Azure Storage:
BEGIN
oracle_ai_data_catalog.update_storage_credential_zfs(
p_access_key => '<value>',
p_secret_key => '<value>'
);
END;
/Tema principal: Registro de credenciales de almacenamiento
Anular registro de credenciales de almacenamiento
Para anular el registro de credenciales de almacenamiento, utilice el procedimiento ORACLE_AI_DATA_CATALOG.UNREGISTER_STORAGE_CREDENTIAL(...) de PL/SQL.
Tenga en cuenta que el invocador debe ser un usuario ADMIN o un usuario con el rol PDB_DBA asignado.
Ejecute lo siguiente:
BEGIN
oracle_ai_data_catalog.unregister_storage_credential;
END;
/Si desea reutilizar el AICAT, utilice el procedimiento UPDATE_STORAGE_CREDENTIAL_<VENDOR>(). Consulte Actualización de credenciales de almacenamiento.
Tema principal: Registro de credenciales de almacenamiento
Registrar almacenamiento con datos de iceberg existentes
AICAT soporta el registro de tablas Apache Iceberg existentes que se almacenan en Object Storage. Una vez registrados, los metadatos y las definiciones de tabla de Iceberg se pueden descubrir y acceder a través de AICAT.
Antes de registrar las mesas Iceberg en AICAT, asegúrese de que:
- AICAT ya está activado en una instancia sin servidor de Autonomous Database. Consulte Activación de Oracle AI Data Catalog.
- Está conectado a la instancia sin servidor de Autonomous Database como usuario ADMIN o un usuario con el rol PDB_DBA o AICAT_USER.
- Ha registrado su almacenamiento en AICAT. Consulte Registro de credenciales de almacenamiento.
- El cubo de Object Storage contiene datos y metadatos válidos de la tabla Iceberg en el formato correcto.
Por ejemplo,
Bucket/Warehouse: N-Warehouse -NAMESPACE -TABLE_NAME_NAMESPACE - data - parquet files. - metadata - json filesaquí:
NAMESPACErepresenta el espacio de nombres/esquema de Iceberg.TABLE_NAME_NAMESPACErepresenta la mesa Icebergdatacontiene los archivos de datos de la tabla (normalmente Parquet)metadatacontiene metadatos de Iceberg y archivos JSON de instantánea necesarios para la gestión y consulta de tablas
- Tiene permisos de acceso al cubo y a los objetos.
Para registrar sus mesas Iceberg existentes con AICAT:
- Conéctese a la instancia de AICAT con las credenciales de autenticación de la base de datos.
Utilice el siguiente comando para generar un token de acceso:
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')
Aquí,
<URI>es la URL del servidor de catálogos.<dbUser>es el nombre de usuario de la base de datos.<dbPwd>es la contraseña de la base de datos.
Si el valor de token se devuelve como
null, vuelva a ejecutar la solicitud mediante la opción-vpara obtener una salida detallada que ayude a solucionar problemas de autenticación o conectividad.Ejemplo:
curl -v -k --location '<URI>/v1/auth/token' - Determine la ubicación del archivo de metadatos de Iceberg para la tabla que desea registrar en el catálogo. Puede obtener la ubicación de metadatos de una de las siguientes maneras:
- Cargue los metadatos de tabla de un servidor de catálogos anterior.
- Examine manualmente el almacén o el cubo de Object Storage e identifique el archivo JSON de metadatos actuales de Iceberg.
Por ejemplo:Namespace : SILVER Table : COMPETITOR_PRICING_SILVER Metadata Location : s3://0A-Warehouse/SILVER/COMPETITOR_PRICING_SILVER/metadata/00002-f2662b11-3268-4792-90f9-b8f4b851d629.metadata.jsonEl archivo JSON de metadatos contiene la definición de tabla Iceberg, el esquema, las instantáneas, los manifiestos y la información de estado de tabla necesaria para el registro del catálogo.
Para crear el espacio de nombres
SILVERsi aún no existe, utilice el siguiente comando:curl -k --location '<URI>/v1/namespaces' \ --header "Authorization: Bearer $TOKEN" \ --header 'Content-Type: application/json' \ --data '{"namespace": ["SILVER"], "properties": {}}' - Para registrar la tabla, ejecute el siguiente comando:
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 }' - Para cargar la tabla recién registrada, ejecute el siguiente comando:
curl -k --location '<URI>/v1/namespaces/SILVER/tables/COMPETITOR_PRICING_SILVER' \ --header "Authorization: Bearer $TOKEN" \ --header 'Content-Type: application/json'
- Del mismo modo, registrar otras tablas.
Tema principal: Oracle AI Data Catalog
Autenticación y Autorización de Usuarios
Para permitir que un usuario de base de datos acceda al servicio AICAT (consulte Seleccionar base de datos de repositorio de catálogo), el usuario debe ser un usuario ADMIN o debe autorizar al usuario con el rol AICAT_USER o PDB_DBA.
Puede autenticar usuarios mediante una llamada de API de token con credenciales de usuario. Para obtener el token de acceso, envíe la siguiente solicitud:
POST https://public_lb_host/catalog/v1/auth/token
Ejemplo de parámetro de solicitud mediante 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'
Cuando el token caduque, recibirá una respuesta 401. Utilice el mismo punto final para obtener un nuevo token.
A continuación, se muestra un token de respuesta de ejemplo:
{
"access_token": "<token>",
"issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
"token_type": "bearer",
"expires_in": 3600
}Utilice el token obtenido como token de portador en la cabecera de autorización:
Authorization: Bearer <your_token>Consulte API de REST para Oracle AI Data Catalog para obtener información detallada sobre cada punto final de REST de API de catálogo.
Tema principal: Oracle AI Data Catalog
Catálogo REST de Iceberg de AICAT
El catálogo REST de Iceberg de AICAT es el catálogo de Iceberg basado en REST por defecto integrado en AICAT. Está diseñado para gestionar de forma eficaz tablas Iceberg proporcionando API de REST para operaciones de ciclo de vida de tablas, incluidas la creación, lectura, actualización y supresión (CRUD), junto con la gestión de metadatos y el manejo de transacciones. El catálogo REST de AICAT Iceberg sigue la especificación estándar de API de catálogo REST de Apache Iceberg. Debe ser un usuario ADMIN o un usuario que tenga otorgado el rol PDB_DBA o AICAT_USER.
Consulte API de REST para Oracle AI Data Catalog para obtener información detallada sobre cada punto final de REST de API de catálogo.
Tema principal: Oracle AI Data Catalog
Uso de AICAT con motores de consulta
AICAT se integra con varios motores de consulta para solicitar y recuperar información. Puede utilizar AICAT con motores de consulta como Apache Spark, agregar tablas externas a través de tablas AICAT, montar AICAT en el catálogo de DBMS, así como crear tablas de Apache Iceberg con Oracle Data Transforms.
Si tiene algún problema, presente una solicitud del servicio en Oracle Cloud Support o comuníquese con su representante de soporte.
Consulta de AICAT mediante Apache Spark
- Descargue y extraiga el archivo
tgzbinario de tiempo de ejecuciónspark-3.5.6-bin-hadoop. - Agregue
iceberg-aws-bundle-1.9.2.jaren el directoriospark-3.5.6-bin-hadoop3/jars. - Desde el directorio raíz (spark-3.5.6-bin-hadoop3) ejecute lo siguiente.
Para configurar 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"Para crear una clave secreta y una clave de acceso secreta, consulte Creación de una clave secreta de cliente.
Para configurar 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" - Ejecute cualquiera de los siguientes comandos SQL de 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()
Agregar Tablas Externas sobre Tablas Iceberg de AICAT
Para utilizar tablas externas, cada objeto de catálogo se debe identificar con un nombre totalmente cualificado en formato <catalog_name>.<namespace>.<table>.
Abra la hoja de trabajo SQL para la instancia de AI Database y ejecute lo siguiente:
-- 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>;
Para obtener más información, consulte Query Apache Iceberg Tables.
Montar y consultar AICAT en el catálogo de DBMS
Abra la hoja de trabajo SQL para la instancia de AI Database y ejecute lo siguiente:
-- 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;
Uso de AICAT como proveedor de catálogos en transformaciones de datos de Oracle
Puede utilizar Data Transforms para conectarse al catálogo REST de AICAT y cargar datos en tablas de Apache Iceberg. Consulte Creación de una conexión Apache Iceberg mediante Oracle AI Data Catalog para obtener información.
Tema principal: Oracle AI Data Catalog