Transferencia de datos entreAWS Glue y Amazon Redshift - AWS Glue

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Transferencia de datos entreAWS Glue y Amazon Redshift

Uso del conector de Spark para Amazon Redshift en los scripts de trabajo deAWS Glue ETL

El uso del conector Amazon Redshift Spark en los scripts de ETL se realiza a través de la DynamicFrame clase. El uso del conector Spark requiere configurar ciertas opciones de configuración al crear o escribir en suDynamicFrame.

Se requieren teclas para trabajar con Amazon Redshift del conectorAWS Glue Spark
ClaveDescripción

url

La URL del JDBC compatible con Amazon Redshift al que se conecta el conectorAWS Glue Spark. Puede copiar esta URL de la pantalla de la consola de Amazon Redshift para la configuración de su grupo de trabajo de Amazon Redshift en el panel de información general, y siempre debe estar en el formulariojdbc:redshift://host:port/redshift-database-name.

dbtable

El nombre de la tabla de Amazon Redshift que se utilizará como fuente de datos.

redshiftTmpDir [Opcional]

El directorio para almacenar los datos temporales que utiliza el conectorAWS Glue Spark durante la ejecución del trabajo. El valor predeterminado esargs["TempDir"], que utiliza el espacio de trabajo de Amazon Redshift.

aws_iam_role

El rol de IAM que se usará al conectarse a los recursos de Amazon Redshift, especificado por el ARN. Lee los ejemplos de este tema para saber cómo crear este ARN a partir de tu ID deAWS cuenta y el nombre del rol de IAM.

user

El nombre de usuario y la contraseña de Amazon Redshift se utilizarán. Aún así, es necesario tener un rol de IAM asociado para acceder a otros recursos que utiliza el conector.

password

nota

Al escribir en una tabla de Amazon Redshift desde unDynamicFrame, se pueden añadir columnas adicionales si hay una discrepancia entre elDynamicFrame esquema (el nombre de la columna y su tipo de datos) y el esquema de la tabla de Amazon Redshift. Este comportamiento es intencional para que DynamicFrame los objetos puedan escribir de forma flexible varios tipos de datos en Amazon Redshift.

Para obtener información sobre los tipos de datos de Amazon Redshift compatibles con el conectorAWS Spark, consulte la integración de Amazon Redshift para Apache Spark.

Fragmento de código de ejemplo

El siguiente fragmento de ejemplo muestra cómo configurar, cargar y escribirDynamicFrame objetos conectados a Amazon Redshift mediantecreate_dynamic_frame_from_options (para cargar datos) ywrite_dynamic_frame_from_jdbc_conf (para escribir datos). Puede encontrar información sobre las propiedades de conexión de los puntos finales de JDBC enPropiedades de las conexiones JDBC de AWS Glue.

ejemplo Configuración y uso de Amazon Redshift como fuente de datos para trabajos de ETL

El siguiente fragmento se puede utilizar para cargar o almacenar datos de Amazon Redshift para su script ETL deAWS Glue. Sustituya los valores comentados en el fragmento tal y como se describe para conectarse a su almacén de datos de Amazon Redshift.

redshift_connection_options = { # JDBC URL to Amazon Redshift Workgroup, available from the Amazon Redshift console "url": "jdbc:redshift://host:port/redshift-database-name", # `table-name`: Amazon Redshift table to load data from, in the JDBC schema.table-name or table-name format "dbtable": "table-name", "redshiftTmpDir": args["TempDir"], # `account-id`: Your AWS account ID # `role-name`: Name of the IAM role configured for COPY, UNLOAD, and CREATE LIBRARY permissions on the table "aws_iam_role": "arn:aws:iam::account-id:role/role-name" } # In the following, glueContext is your Glue Context for the ETL job. # To load from Amazon Redshift load_rs_dynamicframe = glueContext.create_dynamic_frame_from_options("redshift", redshift_connection_options) # To write data to Amazon Redshift glueContext.write_dynamic_frame_from_jdbc_conf( # `frame-to-write`: The `DynamicFrame` object to write to Amazon Redshift frame = frame-to-write, # `connection-name`: The catalog connection to use. catalog_connection = connection-name, connection_options = redshift_connection_options, redshift_tmp_dir = args["TempDir"] )