Cargar datos mediante COPY INTO con una entidad de servicio

En este artículo se describe el uso del comando COPY INTO para cargar datos desde un contenedor de Azure Data Lake Storage Gen2 (ADLS Gen2) de la cuenta de Azure en una tabla de Databricks SQL.

En los pasos de este artículo se supone que el administrador ha configurado una instancia de SQL Warehouse para usar una entidad de servicio de Azure Databricks, para poder acceder a los archivos de origen en ADLS Gen2. Si el administrador configuró una ubicación externa de Unity Catalog con una credencial de almacenamiento, consulte Carga de datos mediante COPY INTO con volúmenes o ubicaciones externas de Unity Catalog en su lugar. Si el administrador le ha dado credenciales temporales (un token de SAS de blob), siga los pasos descritos en Carga de datos mediante COPY INTO con credenciales temporales en su lugar.

Databricks recomienda usar el comando COPY INTO para cargar datos de forma incremental y masiva con Databricks SQL.

Nota:

COPY INTO funciona bien para orígenes de datos que contienen miles de archivos. Databricks recomienda usar el Cargador automático para cargar millones de archivos, que no se admiten en Databricks SQL.

Antes de empezar

Antes de cargar los datos en Azure Databricks, asegúrese de tener lo siguiente:

  • Acceso a los datos de ADLS Gen2. El administrador debe completar primero los pasos descritos en Configuración del acceso a los datos para la ingesta, para que la instancia de Databricks SQL Warehouse pueda leer los archivos de origen.
  • Un almacén de Databricks SQL.
  • Permiso Can manage (Puede administrar) en SQL Warehouse.
  • Ruta de acceso a los datos en un contenedor de ADLS Gen2.
  • Estar familiarizado con la interfaz de usuario de Databricks SQL.

Paso 1: Confirmar el acceso a los datos en el almacenamiento en la nube

Para confirmar que tiene acceso a los datos correctos en el almacenamiento de objetos en la nube, haga lo siguiente:

  1. En la barra lateral, haga clic en Create > Query.

  2. En la barra de menús del editor de SQL, seleccione una instancia de SQL Warehouse.

  3. Pegue el siguiente código en el editor de SQL:

    select * from csv.<path>
    

    Reemplace <path> por la ruta de acceso del contenedor de ADLS Gen2 que recibió del administrador, por ejemplo, abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>.

  4. Haga clic en Ejecutar.

Paso 2: Crear una tabla

En este paso, se describe cómo crear una tabla en el área de trabajo de Azure Databricks para almacenar los datos entrantes.

  1. Pegue el siguiente código en el editor de SQL:

    CREATE TABLE <catalog_name>.<schema_name>.<table_name> (
      tpep_pickup_datetime  TIMESTAMP,
      tpep_dropoff_datetime TIMESTAMP,
      trip_distance DOUBLE,
      fare_amount DOUBLE,
      pickup_zip INT,
      dropoff_zip INT
    );
    
  2. Haga clic en Ejecutar.

Paso 3: Cargar los datos desde el almacenamiento en la nube en la tabla

En este paso se describe cómo cargar los datos de un contenedor de ADLS Gen2 en la tabla del área de trabajo de Azure Databricks.

  1. En la barra lateral, haga clic en Create > Query.

  2. En la barra de menús del editor de SQL, seleccione una instancia de SQL Warehouse y asegúrese de que se está ejecutando SQL Warehouse.

  3. Pegue el siguiente código en el editor de SQL. En este código, reemplace:

    • <container> con el nombre del contenedor de ADLS Gen2 de la cuenta de almacenamiento.
    • <storage-account> por el nombre de la cuenta de almacenamiento de ADLS Gen2.
    • <folder> con el nombre de la carpeta que contiene los datos.
    • <blob-sas-token> con el valor del token de SAS de blob que recibió del administrador.
    COPY INTO <catalog-name>.<schema-name>.<table-name>
    FROM 'abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>'
    FILEFORMAT = CSV
    FORMAT_OPTIONS (
      'header' = 'true',
      'inferSchema' = 'true'
    );
    
    SELECT * FROM <catalog-name>.<schema-name>.<table-name>;
    

    Nota:

    FORMAT_OPTIONS es diferente de FILEFORMAT. En este caso, la opción header indica a Azure Databricks que trate la primera fila del archivo .csv como encabezado y las opciones inferSchema indican a Azure Databricks que determine automáticamente el tipo de datos de cada campo del archivo .csv.

  4. Haga clic en Ejecutar.

    Nota:

    Si hace clic en Run de nuevo, no se cargan datos nuevos en la tabla. Esto se debe a que el comando COPY INTO solo procesa lo que considera nuevos datos.

Limpieza

Puede limpiar los recursos asociados del área de trabajo si ya no quiere conservarlos.

Eliminación de las tablas

  1. En la barra lateral, haga clic en Create > Query.

  2. Seleccione una instancia de SQL Warehouse y asegúrese de que se está ejecutando SQL Warehouse.

  3. Pegue el código siguiente:

    DROP TABLE <catalog-name>.<schema-name>.<table-name>;
    
  4. Haga clic en Ejecutar.

  5. Mantenga el puntero sobre la pestaña de esta consulta y, a continuación, haga clic en el icono X.

Eliminación de las consultas en el editor de SQL

  1. En la barra lateral, haga clic en Editor de SQL.
  2. En la barra de menús del editor de SQL, mantenga el puntero sobre la pestaña de cada consulta que creó para este tutorial y, a continuación, haga clic en el icono X.

Recursos adicionales