Creación de esquemas externos para Amazon Redshift Spectrum - Amazon Redshift

Creación de esquemas externos para Amazon Redshift Spectrum

Todas las tablas externas deben crearse en un esquema externo, que puede crear utilizando una instrucción CREATE EXTERNAL SCHEMA.

nota

Algunas aplicaciones utilizan indistintamente el término base de datos y esquema. En Amazon Redshift, se utiliza el término esquema.

Un esquema externo de Amazon Redshift referencia una base de datos externa en un catálogo de datos externo. Puede crear la base de datos externa en Amazon Redshift, Amazon Athena, AWS Glue Data Catalog o un metastore de Apache Hive, como Amazon EMR. Si crea una base de datos externa en Amazon Redshift, la base de datos se encuentra en el catálogo de datos de Athena. Para crear una base de datos en un metaalmacén Hive, necesita crear la base de datos en su aplicación Hive.

Amazon Redshift necesita autorización para obtener acceso al catálogo de datos de Athena y a los archivos de datos de Amazon S3 en su nombre. Para proporcionar esa autorización, primero cree un rol de AWS Identity and Access Management (IAM). Después tiene que adjuntar el rol al clúster y proporcionar el nombre de recurso de Amazon (ARN) para ese rol en la instrucción CREATE EXTERNAL SCHEMA de Amazon Redshift. Para obtener más información acerca de la autorización, consulte Políticas de IAM para Amazon Redshift Spectrum.

nota

Si actualmente dispone de tablas externas de Redshift Spectrum en el catálogo de datos de Athena, puede migrar ese catálogo de datos de Athena a uno de AWS Glue. Para usar un catálogo de datos de AWS Glue con Redshift Spectrum, es posible que tenga que cambiar las políticas de IAM. Para obtener más información, consulte Actualización al catálogo de datos de AWS Glue en la Guía del usuario de Amazon Athena.

Para crear una base de datos externa en el mismo momento en que crea un esquema externo, especifique el FROM DATA CATALOG e incluya la cláusula CREATE EXTERNAL DATABASE en su instrucción CREATE EXTERNAL SCHEMA.

En el siguiente ejemplo, se crea un esquema externo denominado spectrum_schema utilizando la base de datos externa spectrum_db.

create external schema spectrum_schema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole' create external database if not exists;

Si administra un catálogo de datos con Athena, especifique el nombre de la base de datos de Athena y la región de AWS en la que se encuentra el catálogo de datos de Athena.

En el siguiente ejemplo, se crea un esquema externo mediante la base de datos sampledb predeterminada en el catálogo de datos de Athena.

create external schema athena_schema from data catalog database 'sampledb' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole' region 'us-east-2';
nota

El parámetro region referencia la región de AWS en la que se encuentra el catálogo de datos de Athena y no a la ubicación de los archivos de datos de Amazon S3.

Si administra el catálogo de datos mediante un metastore de Hive, como Amazon EMR, sus grupos de seguridad se deben configurar de manera tal que permitan el tráfico entre los clústeres.

En la instrucción CREATE EXTERNAL SCHEMA, especifique la opción FROM HIVE METASTORE e incluya el Uniform Resource Identifier (URI, Identificador uniforme de recursos) y el número de puerto del metaalmacén. En el siguiente ejemplo, se crea un esquema externo a través de una base de datos de metaalmacén Hive denominada hive_db.

create external schema hive_schema from hive metastore database 'hive_db' uri '172.10.10.10' port 99 iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole'

Para ver los esquemas externos para su clúster, consulte la tabla de catálogo PG_EXTERNAL_SCHEMA o la vista SVV_EXTERNAL_SCHEMAS. En el siguiente ejemplo, se consulta SVV_EXTERNAL_SCHEMAS, que combina PG_EXTERNAL_SCHEMA y PG_NAMESPACE.

select * from svv_external_schemas

Para ver la sintaxis completa del comando y ejemplos, consulte CREATE EXTERNAL SCHEMA.

Uso de catálogos externos en Amazon Redshift Spectrum

Los metadatos para las bases de datos y las tablas externas de Amazon Redshift Spectrum se almacenan en un catálogo de datos externo. De manera predeterminada, los metadatos de Redshift Spectrum se almacenan en un catálogo de datos de Athena. Puede ver y administrar bases de datos y tablas de Redshift Spectrum en su consola de Athena.

También puede crear y administrar bases de datos y tablas externas mediante el lenguaje de definición de datos (DDL) de Hive a través de Athena o un metastore de Hive, como Amazon EMR.

nota

Se recomienda que utilice Amazon Redshift para crear y administrar las bases de datos y las tablas externas de Redshift Spectrum.

Visualización de las bases de datos de Redshift Spectrum en Athena y AWS Glue

Puede crear una base de datos externa que incluye la cláusula CREATE EXTERNAL DATABASE IF NOT EXISTS como parte de su instrucción CREATE EXTERNAL SCHEMA. En estos casos, los metadatos de la base de datos externa se almacenan en su catálogo de datos. Los metadatos para las tablas externas que cree calificadas por el esquema externo también se almacenan en su catálogo de datos de .

Athena y AWS Glue mantienen un catálogo de datos por cada Región de AWS admitida. Para ver los metadatos de la tabla, inicie sesión en Athena o la consola de AWS Glue. En Athena, elija Data sources (Orígenes de datos), su AWS Glue y, a continuación, vea los detalles de su base de datos. En AWS Glue, elija Databases (Bases de datos), su base de datos externa y luego vea los detalles de su base de datos.

Si crea y administra las tablas externas con Athena, registre la base de datos con CREATE EXTERNAL SCHEMA. Por ejemplo, el siguiente comando registra la base de datos de Athena denominada sampledb.

create external schema athena_sample from data catalog database 'sampledb' iam_role 'arn:aws:iam::123456789012:role/mySpectrumRole' region 'us-east-1';

Cuando consulta la vista de sistema SVV_EXTERNAL_TABLES, ve las tablas de la base de datos sampledb de Athena y también las tablas que creó en Amazon Redshift.

select * from svv_external_tables;
schemaname    | tablename        | location                                               
--------------+------------------+--------------------------------------------------------
athena_sample | elb_logs         | s3://athena-examples/elb/plaintext           
athena_sample | lineitem_1t_csv  | s3://myspectrum/tpch/1000/lineitem_csv                
athena_sample | lineitem_1t_part | s3://myspectrum/tpch/1000/lineitem_partition          
spectrum      | sales            | s3://redshift-downloads/tickit/spectrum/sales          
spectrum      | sales_part       | s3://redshift-downloads/tickit/spectrum/sales_part

Registro de una base de datos de metaalmacén Apache Hive

Si crea tablas externas en un metaalmacén Apache Hive, puede usar CREATE EXTERNAL SCHEMA para registrar esas tablas en Redshift Spectrum.

En la instrucción CREATE EXTERNAL SCHEMA, especifique la cláusula FROM HIVE METASTORE y brinde el Uniform Resource Identifier (URI, Identificador uniforme de recursos) y el número de puerto del metaalmacén Hive. El rol de IAM debe incluir un permiso de acceso para Amazon S3, aunque no necesita permisos para Athena. En el siguiente ejemplo, se registra un metaalmacén Hive.

create external schema if not exists hive_schema from hive metastore database 'hive_database' uri 'ip-10-0-111-111.us-west-2.compute.internal' port 9083 iam_role 'arn:aws:iam::123456789012:role/mySpectrumRole';

Habilitación del acceso del clúster de Amazon Redshift al clúster de Amazon EMR

Si el metastore de Hive está en Amazon EMR, debe conceder al clúster de Amazon Redshift acceso a su clúster de Amazon EMR. Para ello, crea un grupo de seguridad de Amazon EC2. A continuación, permite todo el tráfico entrante al grupo de seguridad de EC2 procedente del grupo de seguridad del clúster de Amazon Redshift y del grupo de seguridad del clúster de Amazon EMR. Luego, agrega la seguridad de EC2 tanto al clúster de Amazon Redshift como al de Amazon EMR.

Visualización del nombre del grupo de seguridad de su clúster de Amazon Redshift

Para mostrar el grupo de seguridad, haga lo siguiente:

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon Redshift en https://console.aws.amazon.com/redshiftv2/.

  2. En el menú de navegación, elija Clusters (Clústeres) y, a continuación, elija el clúster de la lista para abrir sus detalles.

  3. Elija Properties (Propiedades) y vea la sección Network and security (Configuración de redes y seguridad).

  4. Busque su grupo de seguridad en VPC security group (Grupo de seguridad de la VPC) y anótelo.

Visualización del nombre del grupo de seguridad del nodo maestro de Amazon EMR
  1. Abra su clúster de Amazon EMR. Para obtener más información, consulte Uso de configuraciones de seguridad para definir la seguridad del clúster en la Guía de administración de Amazon EMR.

  2. En Security and access (Seguridad y acceso), anote el nombre del grupo de seguridad del nodo maestro de Amazon EMR.

    Captura de pantalla en la que se destaca el nombre del grupo de seguridad del nodo maestro de Amazon EMR en la consola de Amazon EMR.
Para crear o modificar un grupo de seguridad de Amazon EC2 para permitir la conexión entre Amazon Redshift y Amazon EMR
  1. En el panel de Amazon EC2, elija Security Groups (Grupos de seguridad). Para obtener más información, consulte Reglas del grupo de seguridad en la Guía del usuario de Amazon EC2.

  2. Elija Create Security Group (Crear grupo de seguridad).

  3. Si utiliza una VPC, elija la VPC en la que estén el clúster de Amazon Redshift y el de Amazon EMR.

  4. Agregue una regla de entrada.

    1. En Type (Tipo), elija Custom TCP (TCP personalizada).

    2. En Source (Origen), seleccione Custom (Personalizado).

    3. Ingrese el nombre del grupo de seguridad de Amazon Redshift.

  5. Agregue otra regla de entrada.

    1. En Type (Tipo), seleccione TCP.

    2. En Port Range (Rango de puertos), escriba 9083.

      nota

      El puerto predeterminado para EMR HMS es 9083. Si su HMS utiliza un puerto diferente, especifique ese puerto en la regla de entrada y en la definición del esquema externo.

    3. En Source (Origen), seleccione Custom (Personalizado).

  6. Ingrese un nombre y una descripción para el grupo de seguridad.

  7. Elija Create Security Group (Crear grupo de seguridad).

Para agregar el grupo de seguridad de Amazon EC2 que creó en el procedimiento anterior al clúster de Amazon Redshift
  1. En Amazon Redshift, elija el clúster.

  2. Seleccione Properties (Propiedades).

  3. Vea la sección Network and security settings (Configuración de redes y seguridad) y, a continuación, elija Edit (Editar).

  4. En la opción VPC security group (Grupo de seguridad de la VPC), elija el nuevo nombre del grupo de seguridad.

  5. Elija Save changes (Guardar cambios).

Para agregar el grupo de seguridad de Amazon EC2 a su clúster de Amazon EMR
  1. En Amazon EMR, elija el clúster. Para obtener más información, consulte Uso de configuraciones de seguridad para definir la seguridad del clúster en la Guía de administración de Amazon EMR.

  2. En Hardware, seleccione el enlace del nodo principal.

  3. Elija el enlace en la columna EC2 Instance ID (ID de instancia EC2).

    Captura de pantalla en la que se destaca un valor de ID de instancia de Amazon EC2 en la consola de Amazon EMR.
  4. En Actions (Acciones), elija Security (Seguridad) y, luego, Change security groups (Cambiar grupos de seguridad).

  5. En Associated sercurity groups (Grupos de seguridad asociados), elija el nuevo grupo de seguridad y, luego, Add security group (Agregar grupo de seguridad).

  6. Seleccione Save (Guardar).