Registro de sesión en una actividad de copia

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.

Puede registrar los nombres de archivo copiados en una actividad de copia. Esto puede ayudar a garantizar que los datos no solo se copien correctamente del origen al destino, sino que también validen la coherencia entre el origen y el destino.

Al habilitar la configuración de tolerancia a errores en una actividad de copia para omitir los datos con errores, también se pueden registrar los archivos omitidos y las filas omitidas. Puede obtener más detalles en Tolerancia a errores de la actividad de copia en Azure Data Factory.

Dado que tiene la oportunidad de obtener todos los nombres de archivo copiados por la actividad de copia de Azure Data Factory (ADF) mediante la habilitación del registro de sesión, le será útil en los escenarios siguientes:

  • Después de usar las actividades de copia de ADF para copiar los archivos de un almacenamiento a otro, encontrará algunos archivos inesperados en el almacén de destino. Puede examinar los registros de sesión de la actividad de copia para ver qué actividad copió realmente los archivos y cuándo. Con este enfoque, puede encontrar fácilmente la causa principal y corregir las configuraciones en ADF.
  • Después de usar las actividades de copia de ADF para copiar los archivos de un almacenamiento a otro, verá que los archivos copiados en el destino no son los que esperaba del almacén de origen. Puede examinar los registros de sesión de la actividad de copia para obtener la marca de tiempo de los trabajos de copia, así como los metadatos de los archivos cuando las actividades de copia de ADF los leen desde el almacén de origen. Con este enfoque, puede confirmar si otras aplicaciones actualizaron los archivos en el almacén de origen después de que ADF los copiara.

Configuración con Azure Data Factory Studio

Para configurar el registro de actividad de copia, agregue primero un actividad de copia a la canalización y, a continuación, use su pestaña Configuración para configurar el registro y varias opciones de registro. Shows how to configure logging for a Copy activity in the settings tab.

Para supervisar posteriormente el registro, puede comprobar la salida de una ejecución de canalización en la pestaña Supervisión de ADF Studio en ejecuciones de canalización. Allí, seleccione la ejecución de canalización que desea supervisar y, a continuación, mantenga el puntero sobre el área situada junto al nombre de la actividad, donde encontrará iconos para los vínculos que muestran la entrada de canalización, la salida (una vez completada) y otros detalles.

Shows how to find the output of a Copy activity in ADF Studio.

Seleccione el icono de salida para ver los detalles del registro del trabajo y anote la ubicación de registro en la cuenta de almacenamiento seleccionada, donde puede ver los detalles de todas las actividades registradas.

Shows the output of a Copy activity with logging enabled.

Consulte a continuación para obtener más información sobre el formato de salida del registro.

Configuración con JSON

En el ejemplo siguiente se proporciona una definición JSON para habilitar el registro de sesión en la actividad de copia:

{
  "name": "CopyActivityLog",
  "type": "Copy",
  "typeProperties": {
    "source": {
      "type": "BinarySource",
      "storeSettings": {
        "type": "AzureDataLakeStoreReadSettings",
        "recursive": true
      },
      "formatSettings": {
        "type": "BinaryReadSettings"
      }
    },
    "sink": {
      "type": "BinarySink",
      "storeSettings": {
        "type": "AzureBlobFSWriteSettings"
      }
    },
    "skipErrorFile": {
      "fileForbidden": true,
      "dataInconsistency": true
    },
    "validateDataConsistency": true,
    "logSettings": {
      "enableCopyActivityLog": true,
      "copyActivityLogSettings": {
        "logLevel": "Warning",
        "enableReliableLogging": false
      },
      "logLocationSettings": {
        "linkedServiceName": {
          "referenceName": "ADLSGen2",
          "type": "LinkedServiceReference"
        },
        "path": "sessionlog/"
      }
    }
  }
}
Propiedad Descripción Valores permitidos Obligatorio
enableCopyActivityLog Cuando se establece en true, tendrá la oportunidad de registrar los archivos copiados, los archivos omitidos o las filas omitidas. True
False (valor predeterminado)
No
logLevel El nivel "Info" registrará todos los archivos copiados, los archivos omitidos y las filas omitidas. El nivel "Advertencia" solo registrará los archivos omitidos y las filas omitidas. Información
Advertencia (valor predeterminado)
No
enableReliableLogging Cuando sea true, una actividad de copia en modo confiable vaciará los registros inmediatamente una vez que se copie cada archivo en el destino. Cuando se copian muchos archivos con el modo de registro confiable habilitado en la actividad de copia, se debe esperar que se vea afectado el rendimiento, ya que se requieren operaciones de escritura dobles para cada archivo que se copia. Una solicitud es para el almacén de destino y la otra es para el almacén de almacenamiento de registros. Una actividad de copia en el modo de mejor esfuerzo vaciará los registros con un lote de registros dentro de un período de tiempo y el rendimiento de la copia se verá mucho menos afectado. No se garantiza la integridad y la escala de tiempo del registro en este modo, ya que hay algunas posibilidades de que el último lote de eventos de registro no se haya vaciado en el archivo de registro cuando se produce un error en una actividad de copia. En este escenario, verá que algunos archivos copiados en el destino no se registran. True
False (valor predeterminado)
No
logLocationSettings Un grupo de propiedades que se pueden utilizar para especificar la ubicación donde se almacenan los registros de sesión. No
linkedServiceName Servicio vinculado de Azure Blob Storage o Azure Data Lake Storage Gen2 para almacenar los archivos de registro de sesión. Nombres de un servicio vinculado a los tipos AzureBlobStorage o AzureBlobFS, que hace referencia a la instancia que usa para almacenar los archivos de registro. No
path Ruta de acceso de los archivos de registro. Especifique la ruta de acceso donde quiere almacenar los archivos de registro. Si no se proporciona una ruta de acceso, el servicio creará un contenedor para usted. No

Supervisión

Salida de una actividad de copia

Cuando la actividad de copia se ha ejecutado completamente, puede ver la ruta de acceso de los archivos de registro desde la salida de cada ejecución de la actividad de copia. Puede encontrar los archivos de registro en la ruta de acceso: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. Los archivos de registro generados tienen la extensión .txt, y sus datos están en formato CSV.

"output": {
            "dataRead": 695,
            "dataWritten": 186,
            "filesRead": 3,  
            "filesWritten": 1, 
            "filesSkipped": 2, 
            "throughput": 297,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "dataConsistencyVerification": 
           { 
                "VerificationResult": "Verified", 
                "InconsistentData": "Skipped" 
           } 
        }

Nota

Cuando la propiedad enableCopyActivityLog está establecida en Enabled, los nombres de los archivos de registro los genera el sistema.

Esquema del archivo de registro

En la tabla siguiente se muestra el esquema de un archivo de registro.

Columna Descripción
Timestamp Marca de tiempo cuando ADF lee, escribe u omite el objeto.
Nivel Nivel de registro de este elemento. Puede ser "Warning" o "Info".
OperationName Comportamiento operativo de la actividad de copia de ADF en cada objeto. Puede ser "FileRead", "FileWrite", "FileSkip" o "TabularRowSkip".
OperationItem Nombres de archivo o filas omitidas.
Message Más información que se mostrará si el archivo se ha leído del almacén de origen o se ha escrito en el almacén de destino. También puede ser el motivo por el que se ha omitido el archivo o las filas.

Este es un ejemplo de un archivo de registro:

Timestamp, Level, OperationName, OperationItem, Message
2020-10-19 08:39:13.6688152,Info,FileRead,"sample1.csv","Start to read file: {""Path"":""sample1.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:39:56.3190846, Warning, FileSkip, "sample1.csv", "File is skipped after read 548000000 bytes: ErrorCode=DataConsistencySourceDataChanged,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Source file 'sample1.csv' is changed by other clients during the copy activity run.,Source=,'." 
2020-10-19 08:40:13.6688152,Info,FileRead,"sample2.csv","Start to read file: {""Path"":""sample2.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:40:13.9003981,Info,FileWrite,"sample2.csv","Start to write file from source file: sample2.csv."
2020-10-19 08:45:17.6508407,Info,FileRead,"sample2.csv","Complete reading file successfully. "
2020-10-19 08:45:28.7390083,Info,FileWrite,"sample2.csv","Complete writing file from source file: sample2.csv. File is successfully copied."

En el archivo de registro anterior, puede ver que sample1.csv se ha omitido porque no se pudo comprobar su coherencia entre el almacén de origen y el de destino. El archivo sample1.csv se vuelve incoherente porque otras aplicaciones lo han modificado mientras la actividad de copia de ADF estaba realizando la copia. También puede ver que sample2.csv se ha copiado correctamente del almacén de origen al de destino.

Puede usar varios motores de análisis para analizar aún más los archivos de registro. A continuación, se muestran algunos ejemplos de uso de la consulta SQL para analizar el archivo de registro mediante la importación del archivo de registro en formato CSV en SQL Database, donde el nombre de la tabla puede ser SessionLogDemo.

  • Seleccionar la lista de archivos copiados.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Seleccionar la lista de archivos copiados en un intervalo de tiempo determinado.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Seleccionar un archivo determinado con su hora de copia y sus metadatos.
select * from SessionLogDemo where OperationItem='<file name>'
  • Seleccionar una lista de archivos con sus metadatos copiados dentro de un intervalo de tiempo.
select * from SessionLogDemo where OperationName='FileRead' and Message like 'Start to read%' and OperationItem in (select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%')
  • Seleccionar la lista de archivos omitidos.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Seleccionar el motivo por el que se ha omitido un archivo determinado.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Seleccionar la lista de archivos omitidos por la misma razón: "el archivo de blob no existe".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Seleccionar el nombre de archivo que requiere más tiempo para la copia.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

Consulte los otros artículos de la actividad de copia: