

# Introducción a () AWS Glue Data Catalog
<a name="start-data-catalog"></a>

 El AWS Glue Data Catalog es su almacén de metadatos técnicos persistentes. Se trata de un servicio administrado que puede usar para almacenar, comentar y compartir metadatos en la nube de AWS. Para obtener más información, consulte [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro). 


|  | 
| --- |
| La consola de AWS Glue, junto con algunas interfaces de usuario, se actualizaron recientemente. | 

## Descripción general
<a name="start-data-catalog-overview"></a>

 Puede usar este tutorial para crear el primer Catálogo de datos de AWS Glue, que utiliza un bucket de Simple Storage Service (Amazon S3) como origen de datos. 

 En este tutorial, utilizará la consola de AWS Glue para hacer lo siguiente: 

1.  Crear una base de datos 

1.  Crear una tabla 

1.  Utilizar un bucket de Amazon S3 como origen de datos 

 Tras completar estos pasos, habrá utilizado correctamente un bucket de Simple Storage Service (Amazon S3) como origen de datos para rellenar el Catálogo de datos de AWS Glue. 

## Paso 1: Crear una base de datos
<a name="start-data-catalog-database"></a>

 Para comenzar, inicie sesión en la Consola de administración de AWS y abra la [consola de AWS Glue](https://console.aws.amazon.com/glue). 

 ** Para crear una base de datos mediante la consola de AWS Glue: ** 

1.  En la consola de AWS Glue, elija **Databases** (Bases de datos) en **Data catalog** (Catálogo de datos) en el menú de la izquierda. 

1.  Elija **Agregar una base de datos**. 

1.  En la página Crear base de datos, ingrese el nombre de la base de datos. En la sección **Ubicación: *opcional***, establezca la ubicación de la URI para que la usen los clientes del catálogo de datos. Si no sabe esto, puede continuar con la creación de la base de datos. 

1.  (Opcional). Ingrese la descripción de la base de datos. 

1.  Elija **Creación de base de datos**. 

 Enhorabuena, acaba de configurar su primera base de datos con la consola de AWS Glue. La nueva base de datos aparecerá en la lista de bases de datos disponibles. Puede editar la base de datos eligiendo su nombre en el panel **Databases** (Bases de datos). 

 **Siguientes pasos** 

 ** Otras formas de crear una base de datos: ** 

 Acaba de crear una base de datos con la consola de AWS Glue, pero hay otras formas de crear una base de datos: 
+ Puede utilizar rastreadores para crear una base de datos y tablas automáticamente. Para configurar una base de datos mediante rastreadores, consulte [Trabajo con rastreadores en la consola de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-crawlers.html). 
+  Puede usar plantillas de CloudFormation. Consulte [Crear recursos de AWS Glue con plantillas de AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html). 
+  También puede crear una base de datos mediante las operaciones de la API de base de datos de AWS Glue. 

   Para crear una base de datos mediante la operación `create`, se debe estructurar la solicitud mediante la inclusión de los parámetros (obligatorios) de `DatabaseInput`. 

   Por ejemplo:   
****  
 A continuación, se muestran ejemplos de cómo puede utilizar CLI, Boto3 o DDL para definir una tabla basada en el mismo archivo flights\$1data.csv del bucket de S3 que utilizó en el tutorial.   

  ```
  aws glue create-database --database-input "{\"Name\":\"clidb\"}"                                              
  ```

  ```
  glueClient = boto3.client('glue')
  
  response = glueClient.create_database(
      DatabaseInput={
          'Name': 'boto3db'
      }
  )
  ```

 Para obtener más información sobre los tipos de datos, la estructura y las operaciones de la API de la base de datos, consulte [API de la base de datos](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-databases.html). 

 **Siguientes pasos** 

 En la siguiente sección, creará una tabla y la agregará a la base de datos. 

También puede explorar la configuración y los permisos de su Catálogo de datos. Consulte [Trabajo con la configuración del Catálogo de datos en la consola de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-data-catalog-settings.html). 

## Paso 2. Creación de una tabla
<a name="start-data-catalog-table"></a>

 En este paso, utilice la consola de AWS Glue para crear una tabla. 

1.  En la consola de AWS Glue, elija **Tables** (Tablas) en el menú de la izquierda. 

1.  Elija **Add table (Añadir tabla)**. 

1.  Configure las propiedades de la tabla ingresando un nombre para ella en **Table details** (Detalles de la tabla). 

1.  En la sección **Databases** (Bases de datos), elija en el menú desplegable la base de datos que creó en el paso 1. 

1.  En la sección **Add a data store** (Agregar un almacén de datos), **S3** estará seleccionado de manera predeterminada como tipo de origen. 

1.  En la sección **Data is located in** (Los datos se encuentran en), elija **Specified path in another account** (Ruta especificada en otra cuenta). 

1. Copie y pegue la ruta del campo de entrada **Include path** (Incluir ruta):

   `s3://crawler-public-us-west-2/flight/2016/csv/`

1.  En la sección **Data format** (Formato de datos), para **Classification** (Clasificación), elija **CSV**, y para **Delimiter** (Delimitador), **comma (,)** (coma [,]). Elija **Siguiente**. 

1. Tendrá que definir un esquema. Un esquema define la estructura y el formato de un registro de datos. Elija **Add column** (Agregar columna). (Para obtener más información, consulte [Schema registries](https://docs.aws.amazon.com/glue/latest/dg/schema-registry.html#schema-registry-schemas.html) [Registros de esquemas]).

1.  Especifique las propiedades de columna: 

   1. Ingrese un nombre de columna. 

   1. Para **Column type** (Tipo de columna), 'cadena' ya está seleccionada de forma predeterminada.

   1. Para **Column number** (Número de columna), '1' ya está seleccionado de forma predeterminada.

   1. Elija **Agregar**.

1.  Tendrá que agregar índices de partición. Es opcional. Para omitir este paso, elija **Next** (Siguiente). 

1.  Se muestra un resumen de las propiedades de la tabla. Si todo está correcto, seleccione **Crear**. En caso contrario, elija **Back** (Volver) y edite según sea necesario. 

 Enhorabuena, ha creado correctamente una tabla de forma manual y la ha asociado a una base de datos. La tabla recién creada aparecerá en el panel de tablas. En el panel, puede administrar y modificar todas sus tablas. 

 Para obtener más información, consulte [Trabajo con tablas en la consola de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html). 

## Siguientes pasos
<a name="start-data-catalog-next-steps"></a>

 **Siguientes pasos** 

 Ahora que hemos rellenado el Catálogo de datos, puede comenzar a crear trabajos en AWS Glue. Consulte [Creación de trabajos visuales de ETL con AWS Glue Studio](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html). 

 Además de utilizar la consola, hay otras formas de definir tablas en el Catálogo de datos, entre ellas:
+  [Creating and running a crawler (Creación y puesta en marcha de un rastreador](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) 
+  [Adición de clasificadores a un rastreador en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-classifier.html) 
+  [Uso de la API de tabla de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html) 
+  [Uso de la plantilla de AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/populate-with-cloudformation-templates.html) 
+  [ Migrating an Apache Hive metastore (Migración de un meta-almacén de Apache Hive](https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/Hive_metastore_migration) 
+  [Uso de AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/glue/create-table.html), Boto3 o lenguaje de definición de datos (DDL)   
****  
 A continuación, se muestran ejemplos de cómo puede utilizar CLI, Boto3 o DDL para definir una tabla basada en el mismo archivo flights\$1data.csv del bucket de S3 que utilizó en el tutorial.   
 Consulte la documentación sobre cómo estructurar un comando AWS CLI. El ejemplo de CLI contiene la sintaxis JSON para el valor “aws glue create-table --table-input”.   

  ```
  {
          "Name": "flights_data_cli",
          "StorageDescriptor": {
              "Columns": [
                  {
                      "Name": "year",
                      "Type": "bigint"
                  },
                  {
                      "Name": "quarter",
                      "Type": "bigint"
                  }
              ],
              "Location": "s3://crawler-public-us-west-2/flight/2016/csv",
              "InputFormat": "org.apache.hadoop.mapred.TextInputFormat",
              "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
              "Compressed": false,
              "NumberOfBuckets": -1,
              "SerdeInfo": {
                  "SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
                  "Parameters": {
                      "field.delim": ",",
                      "serialization.format": ","
                  }
              }
          },
          "PartitionKeys": [
              {
                  "Name": "mon",
                  "Type": "string"
              }
          ],
          "TableType": "EXTERNAL_TABLE",
          "Parameters": {
              "EXTERNAL": "TRUE",
              "classification": "csv",
              "columnsOrdered": "true",
              "compressionType": "none",
              "delimiter": ",",
              "skip.header.line.count": "1",
              "typeOfData": "file"
          }
      }
  ```

  ```
  import boto3
  
  glue_client = boto3.client("glue")
  
  response = glue_client.create_table(
      DatabaseName='sampledb',
      TableInput={
          'Name': 'flights_data_manual',
      'StorageDescriptor': {
        'Columns': [{
          'Name': 'year',
          'Type': 'bigint'
        }, {
          'Name': 'quarter',
          'Type': 'bigint'
        }],
        'Location': 's3://crawler-public-us-west-2/flight/2016/csv',
        'InputFormat': 'org.apache.hadoop.mapred.TextInputFormat',
        'OutputFormat': 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat',
        'Compressed': False,
        'NumberOfBuckets': -1,
        'SerdeInfo': {
          'SerializationLibrary': 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe',
          'Parameters': {
            'field.delim': ',',
            'serialization.format': ','
          }
        },
      },
      'PartitionKeys': [{
        'Name': 'mon',
        'Type': 'string'
      }],
      'TableType': 'EXTERNAL_TABLE',
      'Parameters': {
        'EXTERNAL': 'TRUE',
        'classification': 'csv',
        'columnsOrdered': 'true',
        'compressionType': 'none',
        'delimiter': ',',
        'skip.header.line.count': '1',
        'typeOfData': 'file'
      }
      }
  )
  ```

  ```
  CREATE EXTERNAL TABLE `sampledb`.`flights_data` (
    `year` bigint, 
    `quarter` bigint)
  PARTITIONED BY ( 
    `mon` string)
  ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY ',' 
  STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
  OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
  LOCATION
    's3://crawler-public-us-west-2/flight/2016/csv/'
  TBLPROPERTIES (
    'classification'='csv', 
    'columnsOrdered'='true', 
    'compressionType'='none', 
    'delimiter'=',', 
    'skip.header.line.count'='1', 
    'typeOfData'='file')
  ```