Журнал сеансов в действие Copy

ПРИМЕНИМО К: Фабрика данных Azure Azure Synapse Analytics

Совет

Data Factory в Microsoft Fabric — это следующее поколение Фабрика данных Azure с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.

Вы можете записать скопированные имена файлов в действие Copy. Это может помочь обеспечить не только успешное копирование данных из источника в место назначения, но также проверить согласованность между источником и местом назначения.

Если включить параметр отказоустойчивости в задании Copy для пропуска неисправных данных, также можно записывать в журнал пропущенные файлы и строки. Вы можете получить дополнительные сведения в разделе отказоустойчивость при копировании данных.

Учитывая, что у вас есть возможность получить все имена файлов, скопированных с помощью действия Copy в Фабрика данных Azure (ADF) через активацию журнала сеансов, это будет полезно для вас в следующих сценариях:

  • После использования действий Copy ADF для копирования файлов из одного хранилища в другое в целевом хранилище вы обнаружите некоторые неожиданные файлы. Вы можете проверить журналы сеансов действие Copy, чтобы увидеть, какое действие фактически копировало файлы и когда. При таком подходе вы можете легко найти первопричину и исправить свои конфигурации в ADF.
  • После использования действий Copy ADF для копирования файлов из одного хранилища в другое вы обнаружите, что файлы, скопированные в место назначения, не являются файлами, ожидаемыми из исходного хранилища. Вы можете проверить журналы сеансов действие Copy, чтобы получить метку времени заданий копирования, а также метаданные файлов, когда действия копирования ADF считывают их из исходного хранилища. При таком подходе можно подтвердить, были ли файлы обновлены другими приложениями в исходном хранилище после копирования с помощью ADF.

Настройка с помощью Фабрика данных Azure Studio

Чтобы настроить логирование для активности Copy, сначала добавьте активность Copy в ваш конвейер, а затем на вкладке "Параметры" настройте логирование и различные его параметры.

Чтобы впоследствии отслеживать журнал, вы можете проверить результаты выполнения конвейера на вкладке «Мониторинг» в ADF Studio в разделе «Запуски конвейеров». Там выберите выполнение конвейера, который вы хотите отслеживать, а затем наведите указатель мыши на область рядом с именем действия, где вы найдете значки со ссылками, показывающими входные и выходные данные конвейера (после завершения), а также другие сведения.

Показывает, как найти выходные данные действия копирования в ADF Studio.

Щелкните значок вывода , чтобы просмотреть сведения о ведении журнала для задания, и обратите внимание на расположение журнала в выбранной учетной записи хранения, где можно просмотреть сведения обо всех зарегистрированных действиях.

Показывает результат активности копирования с включенным ведением журнала.

Дополнительные сведения о формате вывода журнала см. ниже.

Настройка с помощью JSON

В следующем примере представлено определение JSON для включения журнала сеанса в Copy Activity.

{
  "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/"
      }
    }
  }
}
Свойство Описание Допустимые значения Обязательное поле
включитьКопированиеЖурналаДеятельности Если установлено значение true, у вас будет возможность регистрировать скопированные файлы, пропущенные файлы или пропущенные строки. Истина
False (по умолчанию)
Нет
LogLevel "Информация" будет записывать в журнал все скопированные файлы, пропущенные файлы и пропущенные строки. "Предупреждение" записывает только пропущенные файлы и пропущенные строки. Сведения
Предупреждение (по умолчанию)
Нет
включитьНадежноеЖурналирование Если истинна, функция «действие Copy» в надежном режиме будет немедленно очищать журналы после копирования каждого файла в место назначения. При копировании многих файлов с включенным режимом надежного ведения журнала в действие Copy следует ожидать, что пропускная способность будет затронута, так как для каждого скопированного файла требуются операции двойной записи. Один запрос следует в конечное хранилище, а другой — в хранилище журналов. Операция копирования в режиме оптимизации усилий будет сбрасывать журналы с пакетом записей за определённый период времени, и пропускная способность копирования будет значительно меньше подвержена влиянию. Полнота и своевременность ведения журнала не гарантируются в этом режиме, поскольку существует несколько вероятностей того, что последний пакет событий журнала не был записан в файл журнала, когда произошел сбой активности копирования. В этом сценарии вы увидите, что несколько файлов, скопированных в место назначения, не регистрируются. Истина
False (по умолчанию)
Нет
logLocationSettings Группа свойств, которые можно использовать для указания расположения для хранения журналов сеанса. Нет
linkedServiceName Связанная служба Хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения для хранения файлов журнала сеансов. Имена типов связанных служб AzureBlobStorage или AzureBlobFS, которые указывают на экземпляр, используемый для хранения файлов журналов. Нет
путь Путь к файлам журнала. Укажите путь, по которому следует хранить файлы журнала. Если путь не указан, служба создаст контейнер самостоятельно. Нет

Наблюдение

Выходные данные из операции копирования

После полного выполнения операции копирования, вы сможете увидеть путь к файлам журнала в результатах каждого запуска операции копирования. Файлы журнала можно найти по пути: https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. Созданные файлы журнала имеют расширение TXT, а их данные имеют формат 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" 
           } 
        }

Примечание.

Если свойство enableCopyActivityLog установлено в значение Enabled, имена файлов журнала генерируются системой.

Схема файла журнала

В следующей таблице приведена схема файла журнала.

Столбец Описание
Метка времени Метка времени, указывающая момент, когда ADF читает, записывает или пропускает объект.
Уровень Уровень логирования для этого элемента. Может быть "Предупреждение" или "Информация".
НазваниеОперации Операционное поведение ADF Copy на каждом объекте. Это может быть FileRead, FileWrite, FileSkip или TabularRowSkip.
Элемент операции Имена файлов или пропущенные строки.
Сообщение Дополнительная информация о том, был ли файл прочитан из исходного хранилища или записан в целевое хранилище. Это также может быть причиной того, что файл или строки пропущены.

Вот пример файла журнала:

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."

Из файла журнала, приведенного выше, можно увидеть, что файл sample1.csv был пропущен, поскольку его не удалось проверить на согласованность в исходном и целевом хранилищах. Дополнительные сведения о том, почему sample1.csv становится несогласованным: это происходит потому, что файл изменяется другими приложениями в тот момент, когда ADF выполняет деятельность копирования одновременно. Можно увидеть, что файл sample2.csv успешно скопирован из источника в конечное хранилище.

Для дальнейшего анализа файлов журнала можно использовать несколько обработчиков анализа. Ниже приведено несколько примеров использования SQL-запроса для анализа файла журнала путем импорта файла журнала CSV в базу данных SQL, где имя таблицы может быть SessionLogDemo.

  • Отправьте мне список скопированных файлов.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Отправьте мне список файлов, скопированных в определенный диапазон времени.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Отправьте мне определенный файл с временем копирования и метаданными.
select * from SessionLogDemo where OperationItem='<file name>'
  • Отправьте мне список файлов с их метаданными, скопированными за определенный диапазон времени.
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%')
  • Отправьте мне список пропущенных файлов.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Отправьте мне причину, по которой определенный файл пропущен.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Дайте мне список файлов, пропущенных по той же причине: "blob-файл не существует".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Отправьте мне имя файла, для которого требуется наибольшее время копирования.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

См. другие статьи о действиях копирования: