Conexiones Vertica
Puede usar AWS Glue for Spark para leer y escribir en tablas de Vertica en AWS Glue 4.0 y versiones posteriores. Puede definir qué leer desde Vertica con una consulta SQL. Se conecta a Vertica con las credenciales de nombre de usuario y contraseña almacenadas en una conexión de AWS Secrets Manager a AWS Glue.
Para obtener más información sobre Vertica, consulte la documentación de Vertica
Configurar las conexiones de Vertica
Para conectarse a Vertica desde AWS Glue, tendrá que crear y almacenar las credenciales de Vertica en un AWS Secrets Manager secreto y, a continuación, asociar ese secreto a una conexión de Vertica AWS Glue. Si su instancia de Vertica está en una Amazon VPC, también deberá proporcionar opciones de red a su conexión de AWS Glue Vertica. Necesitará un bucket o carpeta de Amazon S3 para utilizar como almacenamiento temporario al leer y escribir en la base de datos.
Para conectarse a Vertica desde AWS Glue, necesitará algunos requisitos previos:
-
Un bucket o una carpeta de Amazon S3 para utilizar como almacenamiento temporario al leer y escribir en la base de datos, al que hace referencia
tempS3Path
.nota
Al utilizar Vertica en las vistas previas de los datos de los trabajos de AWS Glue, puede que los archivos temporales no se eliminen automáticamente de
tempS3Path
. Para garantizar la eliminación de los archivos temporales, finalice directamente la sesión de vista previa de datos al seleccionar Finalizar sesión en el panel Vista previa de datos.Si no puede garantizar que la sesión de vista previa de datos finalice directamente, considere configurar Amazon S3 Lifecycle para eliminar los datos antiguos. Recomendamos eliminar los datos de más de 49 horas, en función del tiempo máximo de ejecución del trabajo más un margen. Para obtener más información sobre la configuración de Amazon S3 Lifecycle, consulte Administración del ciclo de vida del almacenamiento en la documentación de Amazon S3.
-
Una política de IAM con los permisos adecuados para su ruta de Amazon S3 que puede asociar a su puesto de trabajo de AWS Glue.
-
Si su instancia de Vertica está en una Amazon VPC, configure Amazon VPC para permitir que su trabajo de AWS Glue se comunique con la instancia de Vertica sin que el tráfico atraviese la Internet pública.
En Amazon VPC, identifique o cree una VPC, una subred y un grupo de seguridad que AWS Glue utilizará al ejecutar el trabajo. Además, debe asegurarse de que Amazon VPC esté configurada para permitir el tráfico de red entre su instancia de Vertica y esta ubicación. Su trabajo tendrá que establecer una conexión TCP con el puerto de cliente de Vertica (el valor predeterminado es 5433). Según el diseño de la red, esto puede requerir cambios en las reglas de los grupos de seguridad, las ACL de red, las puertas de enlace de NAT y las conexiones entre pares.
A continuación, puede proceder a configurar AWS Glue para su uso con Vertica.
Para configurar una conexión a Vertica:
-
En AWS Secrets Manager, cree un secreto con sus credenciales de Vertica,
verticaUsername
yverticaPassword
. Para crear un secreto en Secrets Manager, siga el tutorial disponible en Crear un secreto AWS Secrets Manager en la documentación AWS Secrets Manager. Después de crear el secreto, conserve el nombre secreto,secretName
, para el siguiente paso.-
Al seleccionar pares clave/valor, genere un par para la clave
user
con el valorverticaUsername
. -
Al seleccionar pares clave/valor, genere un par para la clave
password
con el valorverticaPassword
.
-
En la consola de AWS Glue, genere una conexión mediante los pasos que se indican en Adición de una conexión de AWS Glue. Tras crear la conexión, conserve el nombre de la conexión,
connectionName
, para el siguiente paso.Al seleccionar un tipo de conexión, seleccione Vertica.
Al seleccionar Vertica Host, proporcione el nombre de host de la instalación de Vertica.
Al seleccionar Vertica Port, proporcione el portal a través del cual está disponible su instalación de Vertica.
Al seleccionar un secreto AWS, proporcione un
secretName
.
-
En las siguientes situaciones, es posible que necesite una configuración adicional:
-
Para las instancias de Vertica alojadas en AWS en una Amazon VPC
-
Proporcione la información de conexión de Amazon VPC a la conexión de AWS Glue que define sus credenciales de seguridad de Vertica. Al crear o actualizar la conexión, configure los VPC, Subred y los grupos de seguridad en Opciones de red.
-
-
Tras crear una conexión AWS Glue Vertica, deberá realizar los siguientes pasos antes de llamar a su método de conexión.
Otorgue al rol de IAM asociado a los permisos de su trabajo de AWS Glue para
tempS3Path
.Otorgue al rol de IAM asociado al permiso de su trabajo de AWS Glue para leer
secretName
.En la configuración del trabajo de Glue AWS, proporcione
connectionName
como una conexión de red adicional.
Leer desde Vertica
Requisitos previos:
-
Una tabla de Vertica desde la cual le gustaría leer. Necesitará el nombre de la base de datos Vertica,
dbName
y el nombre de la tabla,tableName
. -
Una conexión AWS Glue Vertica configurada para proporcionar información de autenticación. Complete los pasos del procedimiento anterior, Para configurar una conexión a Vertica y configurar su información de autenticación. Necesitará el nombre de la conexión de AWS Glue,
connectionName
. -
Un bucket o una carpeta de Amazon S3 para usar como almacenamiento temporal, como se mencionó anteriormente. Necesitará el nombre
tempS3Path
. Deberá conectarse a esta ubicación mediante el protocolos3a
.
Por ejemplo:
dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="vertica", connection_options={ "connectionName": "
connectionName
", "staging_fs_url": "s3a://tempS3Path
", "db": "dbName
", "table": "tableName
", } )
También puede proporcionar una consulta de SELECT SQL para filtrar los resultados devueltos a su DynamicFrame o para acceder al conjunto de datos desde múltiples tablas.
Por ejemplo:
dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="vertica", connection_options={ "connectionName": "
connectionName
", "staging_fs_url": "s3a://tempS3Path
", "db": "dbName
", "query": "select * FROMtableName
", }, )
Escribir en tablas de Vertica
En este ejemplo, se escribe información de un DynamicFrame existente, dynamicFrame
en Vertica. Si la tabla ya contiene información, AWS Glue agregará los datos de su DynamicFrame.
Requisitos previos:
-
El nombre de tabla actual o deseado,
tableName
, al que desearía escribir. También necesitará el nombre de la base de datos de Vertica correspondiente,dbName.
-
Una conexión AWS Glue Vertica configurada para proporcionar información de autenticación. Complete los pasos del procedimiento anterior, Para configurar una conexión a Vertica y configurar su información de autenticación. Necesitará el nombre de la conexión de AWS Glue,
connectionName
. -
Un bucket o una carpeta de Amazon S3 para usar como almacenamiento temporal, como se mencionó anteriormente. Necesitará el nombre
tempS3Path
. Deberá conectarse a esta ubicación mediante el protocolos3a
.
Por ejemplo:
glueContext.write_dynamic_frame.from_options( frame=
dynamicFrame
, connection_type="vertica", connection_options={ "connectionName": "connectionName
", "staging_fs_url": "s3a://tempS3Path
", "db": "dbName
", "table": "tableName
", } )
Referencia de opciones de conexión de Vertica
-
connectionName
: obligatorio. Se utiliza para lectura/escritura. El nombre de una conexión de AWS Glue Vertica configurada para proporcionar información de autenticación y red a su método de conexión. -
db
: obligatorio. Se utiliza para lectura/escritura. El nombre de una base de datos de Vertica con la que interactuará su método de conexión. -
dbSchema
— Obligatorio si es necesario para identificar la tabla. Se utiliza para lectura/escritura. Predeterminado:public
. El nombre del esquema con el que interactuará su método de conexión. -
table
— Necesario para escribir, obligatorio para leer a menos que se proporcionequery
. Se utiliza para lectura/escritura. El nombre de una tabla con la que interactuará su método de conexión. -
query
: se utiliza para leer. Una consulta SELECT SQL que define lo que se debe recuperar al leer desde Teradata. -
staging_fs_url
: obligatorio. Se utiliza para lectura/escritura. Valores válidos: direcciones URLs3a
. La URL de un bucket o una carpeta de Amazon S3 que se va a utilizar como almacenamiento temporal.