En este documento, se proporciona una plantilla de referencia para compilar un conector personalizado que permita extraer metadatos de fuentes externas, como MySQL, SQL Server y Oracle. Puedes usar este conector para importar metadatos a Knowledge Catalog (anteriormente, Dataplex Universal Catalog) a través de una canalización de conectividad administrada. Se incluye un ejemplo de conector de Python para Oracle Database Express Edition (XE) como punto de partida. También puedes desarrollar conectores con Java, Scala o R.
Cómo funcionan los conectores
Un conector extrae metadatos de una fuente de datos externa, 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 se usa para importar metadatos del 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. Si bien puedes compilar un conector que no use Spark, te recomendamos que lo uses porque puede mejorar el rendimiento de tu conector.
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 de
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 para 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 archivos de importación de metadatos en esta carpeta.
Las plantillas de canalización admiten conectores de PySpark. Las plantillas suponen que el controlador (mainPythonFileUri) es un archivo local en la imagen del conector llamado main.py. Puedes modificar las plantillas de canalización para otros casos, como un conector de Spark, un URI de controlador diferente o cualquier otra opción.
A continuación, se explica 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 esta guía, 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 Google Cloud.
-
Crea o selecciona un Google Cloud proyecto.
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.
-
Crear 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 Google Cloud proyecto:
gcloud projects create PROJECT_ID
Reemplaza