Los conectores personalizados te permiten extraer metadatos de fuentes de datos de terceros, como MySQL, SQL Server y Oracle. Luego, puedes importar estos metadatos a Knowledge Catalog (anteriormente, Dataplex Universal Catalog) a través de una canalización de conectividad administrada. Crear un conector personalizado te ayuda a catalogar, buscar y administrar recursos de fuentes de datos que no tienen un conector precompilado.
Puedes usar la plantilla de referencia de PySpark y el conector de Python de ejemplo para Oracle Database Express Edition (XE) en esta página como punto de partida para compilar tu propio conector.
Cómo funcionan los conectores
Un conector extrae metadatos de una fuente de datos de terceros, los transforma al formato ImportItem de Knowledge Catalog y genera archivos de importación de metadatos que Knowledge Catalog puede importar.
El conector forma parte de una canalización de conectividad administrada. Una canalización de conectividad administrada es un flujo de trabajo organizado que usas para importar metadatos de Knowledge Catalog. La canalización de conectividad administrada ejecuta el conector y realiza otras tareas en el flujo de trabajo de importación, como ejecutar un trabajo de importación de metadatos y capturar registros.
La canalización de conectividad administrada ejecuta el conector con un trabajo por lotes de Managed Service para Apache Spark. Managed Service para Apache Spark proporciona un entorno de ejecución de Spark sin servidores. Aunque puedes compilar un conector que no use Spark, te recomendamos que lo uses porque puede mejorar el rendimiento de tu conector. Puedes desarrollar conectores con Python, Java, Scala o R.
Requisitos del conector
El conector tiene los siguientes requisitos:
- El conector debe ser una imagen de Artifact Registry que se pueda ejecutar en Managed Service para Apache Spark.
- El conector debe generar archivos de metadatos en un formato que pueda importar
un trabajo de importación de metadatos de Knowledge Catalog (el método de la API
metadataJobs.create). Para conocer los requisitos detallados, consulta Archivo de importación de metadatos. El conector debe aceptar los siguientes argumentos de línea de comandos para recibir información de la canalización:
Argumento de la línea de comandos Valor que proporciona la canalización target_project_idPROJECT_ID target_location_idREGION target_entry_group_idENTRY_GROUP_ID output_bucketCLOUD_STORAGE_BUCKET_ID output_folderFOLDER_ID El conector usa estos argumentos para generar metadatos en un grupo de entrada de destino
projects/PROJECT_ID/locations/REGION/entryGroups/ENTRY_GROUP_IDy escribir en un bucket de Cloud Storagegs://CLOUD_STORAGE_BUCKET_ID/FOLDER_ID. Cada ejecución de la canalización crea una carpeta nueva FOLDER_ID en el bucket CLOUD_STORAGE_BUCKET_ID. El conector debe escribir los archivos de importación de metadatos en esta carpeta.
Las plantillas de canalización admiten conectores de PySpark. En las plantillas, se supone que el controlador
(mainPythonFileUri)
es un archivo local en la imagen del conector llamada main.py. Puedes modificar las plantillas de canalización para otras situaciones, como un conector de Spark, un URI de controlador diferente o algunas otras opciones.
A continuación, se muestra cómo usar PySpark para crear un elemento de importación en el archivo de importación de metadatos.
"""PySpark schemas for the data."""
entry_source_schema = StructType([
StructField("display_name", StringType()),
StructField("source", StringType())])
aspect_schema = MapType(StringType(),
StructType([
StructField("aspect_type", StringType()),
StructField("data", StructType([
]))
])
)
entry_schema = StructType([
StructField("name", StringType()),
StructField("entry_type", StringType()),
StructField("fully_qualified_name", StringType()),
StructField("parent_entry", StringType()),
StructField("entry_source", entry_source_schema),
StructField("aspects", aspect_schema)
])
import_item_schema = StructType([
StructField("entry", entry_schema),
StructField("aspect_keys", ArrayType(StringType())),
StructField("update_mask", ArrayType(StringType()))
])
Antes de comenzar
En el ejemplo de esta página, se usa un conector de Python para Oracle Database Express Edition (XE) y se supone que conoces Python y PySpark.
Revisa la siguiente información:
- Conceptos de metadatos de Knowledge Catalog
- Documentación sobre los trabajos de importación de metadatos
Haz lo siguiente: Crea todos los recursos en la misma ubicación de Google Cloud.
-
Crea o selecciona un proyecto de Google Cloud .
Roles necesarios para seleccionar o crear un proyecto
- Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
-
Crea un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos
(
roles/resourcemanager.projectCreator), que contiene el permisoresourcemanager.projects.create. Obtén más información para otorgar roles.
-
Crea un proyecto de Google Cloud :
gcloud projects create PROJECT_ID
Reemplaza
PROJECT_IDpor un nombre para el proyecto de Google Cloud que estás creando. -
Selecciona el proyecto de Google Cloud que creaste:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_IDpor el nombre de tu proyecto de Google Cloud .
-
Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .
Habilita las APIs de Dataplex, Dataproc, Workflows y Artifact Registry, si aún no están habilitadas:
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el permiso
serviceusage.services.enable. Si creaste el proyecto, es probable que ya tengas este permiso a través del rol de propietario (roles/owner). De lo contrario, puedes obtenerlo a través del rol de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin). Obtén más información para otorgar roles.gcloud services enable dataplex.googleapis.com
dataproc.googleapis.com workflows.googleapis.com artifactregistry.googleapis.com -
Instala Google Cloud CLI.
-
Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
Otorga roles a tu cuenta de usuario. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM:
roles/resourcemanager.projectCreator, roles/billing.projectManager, roles/serviceusage.admin, roles/iam.serviceAccountCreator, roles/iam.securityAdmin, roles/storage.admin, roles/artifactregistry.writer, roles/dataplex.entryGroupOwner, roles/dataplex.entryOwner, roles/dataplex.aspectTypeOwnergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Reemplaza lo siguiente:
PROJECT_ID: ID del proyectoUSER_IDENTIFIER: Es el identificador de tu cuenta de usuario . Por ejemplo,myemail@example.com. cuenta deROLE: Es el rol de IAM que otorgas a tu cuenta de usuario.
-
Configura la autenticación:
-
Asegúrate de tener el rol de IAM de creador de cuentas de servicio
(
roles/iam.serviceAccountCreator) y el rol de administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin). Obtén más información para otorgar roles. -
Crea la cuenta de servicio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Reemplaza
SERVICE_ACCOUNT_NAMEpor un nombre para la cuenta de servicio. -
Otorga el rol de IAM
roles/ownera la cuenta de servicio.gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner
Reemplaza lo siguiente:
SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicioPROJECT_ID: el ID del proyecto en el que creaste la cuenta de servicio
-
Asegúrate de tener el rol de IAM de creador de cuentas de servicio
(
-
Crea un bucket de Cloud Storage para almacenar los archivos de importación de metadatos.
-
Crea los siguientes recursos de metadatos en el mismo proyecto.
Para ver valores de ejemplo, consulta la sección Recursos de metadatos de ejemplo para una fuente de Oracle de este documento.
- Crea un grupo de entradas.
-
Crea tipos de aspectos personalizados para las entradas que quieras importar. Usa la convención de nombres
SOURCE-ENTITY_TO_IMPORT.Por ejemplo, para una base de datos de Oracle, crea un tipo de aspecto llamado
oracle-database.De manera opcional, puedes crear tipos de aspectos adicionales para almacenar otra información.
-
Crea tipos de entradas personalizados para los recursos que quieras importar y asígnales los tipos de aspectos pertinentes. Usa la convención de nombres
SOURCE-ENTITY_TO_IMPORT.Por ejemplo, para una base de datos de Oracle, crea un tipo de entrada llamado
oracle-database. Vincúlalo al tipo de aspecto que se llamaoracle-database.
- Asegúrate de que se pueda acceder a tu fuente de terceros desde tu proyecto de Google Cloud . Para obtener más información, consulta Configuración de red de Managed Service para Apache Spark.
Crea un conector de Python básico
En el conector básico de Python de ejemplo, se crean entradas de nivel superior para una fuente de datos de Oracle con las clases de la biblioteca cliente de Knowledge Catalog. Luego, proporciona los valores para los campos de entrada.
El conector crea un archivo de importación de metadatos con las siguientes entradas:
- Una entrada
instance, con el tipo de entradaprojects/PROJECT_ID/locations/LOCATION/entryTypes/oracle-instance. Esta entrada representa un sistema de Oracle Database XE. - Una entrada
database, que representa una base de datos dentro del sistema de Oracle Database XE.
Para compilar un conector de Python básico, haz lo siguiente:
Clona el repositorio
cloud-dataplex.Configura un entorno local. Te recomendamos que uses un entorno virtual.
mkdir venv python -m venv venv/ source venv/bin/activateUsa las versiones activas o de mantenimiento de Python. Se admiten las versiones 3.7 y posteriores de Python.
Crea un proyecto de Python.
Requisitos de instalación:
pip install -r requirements.txtSe instalan los siguientes requisitos:
Agrega un archivo de canalización
main.pyen la raíz del proyecto.Cuando implementas tu código en Managed Service para Apache Spark, el archivo
main.pysirve como punto de entrada para la ejecución. Te recomendamos que minimices la cantidad de información que se almacena en el archivomain.py. Usa este archivo para llamar a funciones y clases que se definen en tu conector, como la clasesrc/bootstrap.py.Crea una carpeta
srcpara almacenar la mayor parte de la lógica de tu conector.Actualiza el archivo
src/cmd_reader.pycon una clase de Python para aceptar argumentos de la línea de comandos. Puedes usar el módulo argeparse para hacerlo.En entornos de producción, te recomendamos que almacenes la contraseña en Secret Manager.
Actualiza el archivo
src/constants.pycon código para crear constantes.Actualiza el archivo
src/name_builder.pycon métodos para compilar los recursos de metadatos que deseas que el conector cree para tus recursos de Oracle. Usa las convenciones que se describen en la sección Recursos de metadatos de ejemplo para una fuente de Oracle de este documento.Debido a que el archivo
name_builder.pyse usa para el código principal de Python y el código principal de PySpark, te recomendamos que escribas los métodos como funciones puras, en lugar de como miembros de una clase.Actualiza el archivo
src/top_entry_builder.pycon código para completar las entradas de nivel superior con datos.Actualiza el archivo
src/bootstrap.pycon código para generar el archivo de importación de metadatos y ejecutar el conector.Ejecuta el código de forma local.
Se devuelve un archivo de importación de metadatos llamado
output.jsonl. El archivo tiene dos líneas, cada una de las cuales representa un elemento de importación. La canalización de conectividad administrada lee este archivo cuando ejecuta el trabajo de importación de metadatos.Opcional: Extiende el ejemplo anterior para usar las clases de la biblioteca cliente de Knowledge Catalog y crear elementos de importación para tablas, esquemas y vistas. También puedes ejecutar el ejemplo de Python en Managed Service para Apache Spark.
Te recomendamos que crees un conector que use Spark (y se ejecute en Managed Service para Apache Spark), ya que puede mejorar el rendimiento de tu conector.
Crea un conector de PySpark
Este ejemplo se basa en la API de DataFrame de PySpark. Puedes instalar PySpark SQL y ejecutarlo de forma local antes de ejecutarlo en Managed Service para Apache Spark. Si instalas y ejecutas PySpark de forma local, instala la biblioteca de PySpark con pip, pero no es necesario que instales un clúster de Spark local.
Por motivos de rendimiento, en este ejemplo no se usan clases predefinidas de la biblioteca de PySpark. En su lugar, el ejemplo crea DataFrames, los convierte en entradas JSON y, luego, escribe el resultado en un archivo de importación de metadatos en formato de líneas JSON que se puede importar a Knowledge Catalog.
Para compilar un conector con PySpark, haz lo siguiente:
Clona el repositorio
cloud-dataplex.Instala PySpark:
pip install pysparkRequisitos de instalación:
pip install -r requirements.txtSe instalan los siguientes requisitos:
Actualiza el archivo
oracle_connector.pycon código para leer datos de una fuente de datos de Oracle y devolver DataFrames.Agrega consultas en SQL para mostrar los metadatos que deseas importar. Las consultas deben devolver la siguiente información:
- Esquemas de bases de datos
- Tablas que pertenecen a estos esquemas
- Columnas que pertenecen a estas tablas, incluidos el nombre y el tipo de datos de la columna, y si la columna admite valores nulos o es obligatoria
Todas las columnas de todas las tablas y vistas se almacenan en la misma tabla del sistema. Puedes seleccionar columnas con el método
_get_columns. Según los parámetros que proporciones, puedes seleccionar columnas para las tablas o para las vistas por separado.Ten en cuenta lo siguiente:
- En Oracle, un esquema de base de datos es propiedad de un usuario de base de datos y tiene el mismo nombre que ese usuario.
- Los objetos de esquema son estructuras lógicas que crean los usuarios. Los objetos, como las tablas o los índices, pueden contener datos, y los objetos, como las vistas o los sinónimos, solo constan de una definición.
- El archivo
ojdbc11.jarcontiene el controlador JDBC de Oracle.
Actualiza el archivo
src/entry_builder.pycon métodos compartidos para aplicar transformaciones de Spark.Ten en cuenta lo siguiente:
- Los métodos compilan los recursos de metadatos que el conector crea para tus recursos de Oracle. Usa las convenciones que se describen en la sección Recursos de metadatos de ejemplo para una fuente de Oracle de este documento.
- El método
convert_to_import_itemsse aplica a esquemas, tablas y vistas. Asegúrate de que el resultado del conector sea uno o más elementos de importación que pueda procesar el métodometadataJobs.create, no entradas individuales. - Incluso en una vista, la columna se llama
TABLE_NAME.
Actualiza el archivo
bootstrap.pycon código para generar el archivo de importación de metadatos y ejecutar el conector.En este ejemplo, se guarda el archivo de importación de metadatos como un solo archivo de líneas JSON. Puedes usar herramientas de PySpark, como la clase
DataFrameWriter, para generar lotes de JSON en paralelo.El conector puede escribir entradas en el archivo de importación de metadatos en cualquier orden.
Actualiza el archivo
gcs_uploader.pycon código para subir el archivo de importación de metadatos a un bucket de Cloud Storage.Compila la imagen del conector.
Si tu conector contiene varios archivos o si deseas usar bibliotecas que no se incluyen en la imagen de Docker predeterminada, debes usar un contenedor personalizado. Managed Service para Apache Spark ejecuta cargas de trabajo dentro de contenedores de Docker. Crea una imagen de Docker personalizada del conector y almacénala en Artifact Registry. Managed Service para Apache Spark lee la imagen de Artifact Registry.
Crea un Dockerfile:
Usa Conda como administrador de paquetes. Managed Service para Apache Spark activa
pysparken el contenedor en el entorno de ejecución, por lo que no necesitas instalar dependencias de PySpark en tu imagen de contenedor personalizada.Compila la imagen de contenedor personalizada y envíala a Artifact Registry.
Debido a que una imagen puede tener varios nombres, puedes usar la etiqueta de Docker para asignarle un alias.
Ejecuta el conector en Managed Service para Apache Spark. Para enviar un trabajo por lotes de PySpark con la imagen de contenedor personalizada, ejecuta el comando
gcloud dataproc batches submit pyspark.gcloud dataproc batches submit pyspark main.py --project=PROJECT \ --region=REGION --batch=BATCH_ID \ --container-image=CUSTOM_CONTAINER_IMAGE \ --service-account=SERVICE_ACCOUNT_NAME \ --jars=PATH_TO_JAR_FILES \ --properties=PYSPARK_PROPERTIES \ -- PIPELINE_ARGUMENTSTen en cuenta lo siguiente:
- Los archivos JAR son controladores para Spark. Para leer desde Oracle, MySQL o
Postgres, debes proporcionar a Apache Spark un paquete específico. El paquete
puede estar ubicado en Cloud Storage o dentro del contenedor. Si el
archivo JAR está dentro del contenedor, la ruta de acceso es similar a
file:///path/to/file/driver.jar. En este ejemplo, la ruta de acceso al archivo JAR es/opt/spark/jars/. - PIPELINE_ARGUMENTS son los argumentos de la línea de comandos para el conector.
El conector extrae los metadatos de la base de datos de Oracle, genera un archivo de importación de metadatos y lo guarda en un bucket de Cloud Storage.
- Los archivos JAR son controladores para Spark. Para leer desde Oracle, MySQL o
Postgres, debes proporcionar a Apache Spark un paquete específico. El paquete
puede estar ubicado en Cloud Storage o dentro del contenedor. Si el
archivo JAR está dentro del contenedor, la ruta de acceso es similar a
Para importar de forma manual los metadatos del archivo de importación de metadatos a Knowledge Catalog, ejecuta un trabajo de metadatos. Usa el método
metadataJobs.create.En la línea de comandos, agrega variables de entorno y crea un alias para el comando curl.
PROJECT_ID=PROJECT LOCATION_ID=LOCATION DATAPLEX_API=dataplex.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION_ID alias gcurl='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json"'Llama al método de la API y pasa los tipos de entrada y de aspecto que deseas importar.
gcurl https://${DATAPLEX_API}/metadataJobs?metadata_job_id="JOB_ID" -d "$(cat <<EOF { "type": "IMPORT", "import_spec": { "source_storage_uri": "gs://BUCKET/FOLDER/", "entry_sync_mode": "FULL", "aspect_sync_mode": "INCREMENTAL", "scope": { "entry_groups": ["projects/PROJECT/locations/LOCATION/entryGroups/ENTRY_GROUP_ID"], "entry_types": [ "projects/PROJECT/locations/LOCATION/entryTypes/oracle-instance", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-database", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-schema", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-table", "projects/PROJECT/locations/LOCATION/entryTypes/oracle-view"], "aspect_types": [ "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-instance", "projects/dataplex-types/locations/global/aspectTypes/schema", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-database", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-schema", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-table", "projects/PROJECT/locations/LOCATION/aspectTypes/oracle-view"], }, }, } EOF )"El tipo de aspecto
schemaes un tipo de aspecto global que define Knowledge Catalog.Ten en cuenta que el formato que usas para los nombres de los tipos de aspectos cuando llamas al método de la API es diferente del formato que usas en el código del conector.
Opcional: Usa Cloud Logging para ver los registros del trabajo de metadatos. Para obtener más información, consulta Supervisa los registros de Knowledge Catalog.
Configura la organización de canalizaciones
En las secciones anteriores, se mostró cómo compilar un conector de ejemplo y ejecutarlo de forma manual.
En un entorno de producción, ejecutas el conector como parte de una canalización de conectividad administrada con una plataforma de organización como Workflows.
Para ejecutar una canalización de conectividad administrada con el conector de ejemplo, sigue los pasos para importar metadatos con Workflows. Qué es lo que SÍ debes hacer:
- Crea el flujo de trabajo en la misma ubicación de Google Cloud que el conector.
En el archivo de definición del flujo de trabajo, actualiza la función
submit_pyspark_extract_jobcon el siguiente código para extraer datos de la base de datos de Oracle con el conector que creaste.- submit_pyspark_extract_job: call: http.post args: url: ${"https://dataproc.googleapis.com/v1/projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/batches"} auth: type: OAuth2 scopes: "https://www.googleapis.com/auth/cloud-platform" headers: Content-Type: "application/json" query: batchId: ${WORKFLOW_ID} body: pysparkBatch: mainPythonFileUri: file:///main.py jars: file:///opt/spark/jars/ojdbc11.jar args: - ${"--host_port=" + args.ORACLE_HOST_PORT} - ${"--user=" + args.ORACLE_USER} - ${"--password=" + args.ORACLE_PASSWORD} - ${"--database=" + args.ORACLE_DATABASE} - ${"--project=" + args.TARGET_PROJECT_ID} - ${"--location=" + args.CLOUD_REGION} - ${"--entry_group=" + args.TARGET_ENTRY_GROUP_ID} - ${"--bucket=" + args.CLOUD_STORAGE_BUCKET_ID} - ${"--folder=" + WORKFLOW_ID} runtimeConfig: version: "2.0" containerImage: "us-central1-docker.pkg.dev/PROJECT/REPOSITORY/oracle-pyspark" environmentConfig: executionConfig: serviceAccount: ${args.SERVICE_ACCOUNT} result: RESPONSE_MESSAGEEn el archivo de definición del flujo de trabajo, actualiza la función
submit_import_jobcon el siguiente código para importar las entradas. La función llama al método de la API demetadataJobs.createpara ejecutar un trabajo de importación de metadatos.- submit_import_job: call: http.post args: url: ${"https://dataplex.googleapis.com/v1/projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/metadataJobs?metadata_job_id=" + WORKFLOW_ID} auth: type: OAuth2 scopes: "https://www.googleapis.com/auth/cloud-platform" body: type: IMPORT import_spec: source_storage_uri: ${"gs://" + args.CLOUD_STORAGE_BUCKET_ID + "/" + WORKFLOW_ID + "/"} entry_sync_mode: FULL aspect_sync_mode: INCREMENTAL scope: entry_groups: - ${"projects/" + args.TARGET_PROJECT_ID + "/locations/" + args.CLOUD_REGION + "/entryGroups/"+args.TARGET_ENTRY_GROUP_ID} entry_types: -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-instance" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-database" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-schema" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-table" -"projects/PROJECT/locations/LOCATION/entryTypes/oracle-view" aspect_types: -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-instance" -"projects/dataplex-types/locations/global/aspectTypes/schema" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-database" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-schema" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-table" -"projects/PROJECT/locations/LOCATION/aspectTypes/oracle-view" result: IMPORT_JOB_RESPONSEProporciona los mismos tipos de entrada y de aspecto que incluiste cuando llamaste al método de la API de forma manual. Ten en cuenta que no hay una coma al final de cada cadena.
Cuando ejecutes el flujo de trabajo, proporciona los siguientes argumentos de entorno de ejecución:
{ "CLOUD_REGION": "us-central1", "ORACLE_USER": "system", "ORACLE_HOST_PORT": "x.x.x.x:1521", "ORACLE_DATABASE": "xe", "ADDITIONAL_CONNECTOR_ARGS": [], }
Opcional: Usa Cloud Logging para ver los registros de la canalización de conectividad administrada. La carga útil del registro incluye un vínculo a los registros del trabajo por lotes de Managed Service para Apache Spark y el trabajo de importación de metadatos, según corresponda. Para obtener más información, consulta Visualiza los registros de flujo de trabajo.
Opcional: Para mejorar la seguridad, el rendimiento y la funcionalidad de tu canalización de conectividad administrada, considera hacer lo siguiente:
- Usa Secret Manager para almacenar las credenciales de tu fuente de datos de terceros.
- Usa PySpark para escribir el resultado de las líneas JSON en varios archivos de importación de metadatos en paralelo.
- Usa un prefijo para dividir archivos grandes (más de 100 MB) en archivos más pequeños.
- Agrega más aspectos personalizados que capturen metadatos empresariales y técnicos adicionales de tu fuente.
Ejemplo de recursos de metadatos para una fuente de Oracle
El conector de ejemplo extrae metadatos de una base de datos de Oracle y los asigna a los recursos de metadatos de Knowledge Catalog correspondientes.
Consideraciones sobre la jerarquía
Cada sistema en Knowledge Catalog tiene una entrada raíz que es la entrada superior
del sistema. Por lo general, la entrada raíz tiene un tipo de entrada instance.
En la siguiente tabla, se muestra la jerarquía de ejemplo de los tipos de entradas y de aspectos
para un sistema de Oracle. Por ejemplo, el tipo de entrada oracle-database está vinculado a
un tipo de aspecto que también se llama oracle-database.
| ID del tipo de entrada | Descripción | ID del tipo de aspecto vinculado |
|---|---|---|
oracle-instance |
La raíz del sistema importado. | oracle-instance |
oracle-database |
La base de datos de Oracle. | oracle-database |
oracle-schema |
Es el esquema de la base de datos. | oracle-schema |
oracle-table |
Una tabla. |
|
oracle-view |
Una vista. |
|
El tipo de aspecto schema es un tipo de aspecto global que define
Knowledge Catalog. Contiene una descripción de los campos de una tabla,
vista o cualquier otra entidad que tenga columnas. El tipo de aspecto personalizado oracle-schema
contiene el nombre del esquema de la base de datos de Oracle.
Ejemplo de campos de elementos de importación
El conector debe usar las siguientes convenciones para los recursos de Oracle.
-
Nombres completamente calificados: Los nombres completamente calificados para los recursos de Oracle usan la siguiente plantilla de nombres. Los caracteres prohibidos se escapan con acentos graves.
Recurso Plantilla Ejemplo Instancia SOURCE:ADDRESSUsa el host y el número de puerto o el nombre de dominio del sistema.
oracle:`localhost:1521`ooracle:`myinstance.com`Base de datos SOURCE:ADDRESS.DATABASEoracle:`localhost:1521`.xeEsquema SOURCE:ADDRESS.DATABASE.SCHEMAoracle:`localhost:1521`.xe.sysTabla SOURCE:ADDRESS.DATABASE.SCHEMA.TABLE_NAMEoracle:`localhost:1521`.xe.sys.ordersVer SOURCE:ADDRESS.DATABASE.SCHEMA.VIEW_NAMEoracle:`localhost:1521`.xe.sys.orders_view -
Nombres o IDs de entrada: Las entradas para los recursos de Oracle usan la siguiente plantilla de nombres. Los caracteres prohibidos se reemplazan por un carácter permitido. Los recursos usan el prefijo
projects/PROJECT/locations/LOCATION/entryGroups/ENTRY_GROUP/entries.Recurso Plantilla Ejemplo Instancia PREFIX/HOST_PORTprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521Base de datos PREFIX/HOST_PORT/databases/DATABASEprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xeEsquema PREFIX/HOST_PORT/databases/DATABASE/database_schemas/SCHEMAprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sysTabla PREFIX/HOST_PORT/databases/DATABASE/database_schemas/SCHEMA/tables/TABLEprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sys/tables/ordersVer PREFIX/HOST_PORT/databases/DATABASE/database_schemas/SCHEMA/views/VIEWprojects/example-project/locations/us-central1/entryGroups/oracle-prod/entries/10.1.1.1@1521/databases/xe/database_schemas/sys/views/orders_view -
Entradas superiores: Si una entrada no es una entrada raíz para el sistema, puede tener un campo de entrada superior que describa su posición en la jerarquía. El campo debe contener el nombre de la entrada superior. Te recomendamos que generes este valor.
En la siguiente tabla, se muestran las entradas superiores de los recursos de Oracle.
Entrada Entrada principal Instancia ""(string vacía)Base de datos Nombre de la instancia Esquema Nombre de la base de datos Tabla Nombre del esquema Ver Nombre del esquema Mapa de aspectos: El mapa de aspectos debe contener al menos un aspecto que describa la entidad que se importará. Este es un mapa de aspectos de ejemplo para una tabla de Oracle.
"example-project.us-central1.oracle-table": { "aspect_type": "example-project.us-central1.oracle-table", "path": "", "data": {} },
Puedes encontrar tipos de aspectos predefinidos (como
schema) que definen la estructura de la tabla o vista en el proyectodataplex-types, en la ubicaciónglobal.-
Claves de aspecto: Las claves de aspecto usan el formato de nombre PROJECT.LOCATION.ASPECT_TYPE. En la siguiente tabla, se muestran ejemplos de claves de aspecto para los recursos de Oracle.
Entrada Ejemplo de clave de aspecto Instancia example-project.us-central1.oracle-instanceBase de datos example-project.us-central1.oracle-databaseEsquema example-project.us-central1.oracle-schemaTabla example-project.us-central1.oracle-tableVer example-project.us-central1.oracle-view