Журнал сеанса в действии Copy
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
Вы можете регистрировать имена скопированных файлов в действии Copy. Это может помочь обеспечить не только успешное копирование данных из источника в место назначения, но также проверить согласованность между источником и местом назначения.
Когда вы включаете параметр отказоустойчивости в действии Copy для пропуска ошибочных данных, пропущенные файлы и пропущенные строки также могут быть зарегистрированы. В действии копирования можно получить дополнительные сведения об отказоустойчивости.
Учитывая, что у вас есть возможность получить все имена файлов через действие Copy Фабрики данных Azure (ADF) посредством включения журнала сеансов, это будет полезно для вас в следующих сценариях:
- После использования действий Copy ADF для копирования файлов из одного хранилища в другое в целевом хранилище вы обнаружите некоторые неожиданные файлы. Вы можете просмотреть журналы сеансов действия Copy, чтобы увидеть, какие действия фактически скопировали эти файлы и когда это произошло. При таком подходе вы можете легко найти первопричину и исправить свои конфигурации в ADF.
- После использования действий Copy ADF для копирования файлов из одного хранилища в другое вы обнаружите, что файлы, скопированные в место назначения, не являются файлами, ожидаемыми из исходного хранилища. Вы можете сканировать журналы сеансов действия Copy, чтобы получить метку времени заданий копирования, а также метаданные файлов, когда действия Copy ADF считали их из исходного хранилища. При таком подходе можно подтвердить, были ли файлы обновлены другими приложениями в исходном хранилище после копирования с помощью ADF.
Настройка с помощью Studio Фабрики данных Azure
Чтобы настроить ведение журнала действий Copy, сначала добавьте действие Copy в конвейер, а затем используйте его вкладку параметров, чтобы настроить ведение журнала и различные параметры ведения журнала.
Чтобы впоследствии отслеживать журнал, вы можете проверить выходные данные запуска конвейера на вкладке мониторинга в Studio ADF в разделе выполнений конвейера. Там выберите выполнение конвейера, который вы хотите отслеживать, а затем наведите указатель мыши на область рядом с именем действия, где вы найдете значки со ссылками, показывающими входные и выходные данные конвейера (после завершения), а также другие сведения.
Щелкните значок вывода , чтобы просмотреть сведения о ведении журнала для задания, и обратите внимание на расположение журнала в выбранной учетной записи хранения, где можно просмотреть сведения обо всех зарегистрированных действиях.
Дополнительные сведения о формате вывода журнала см. ниже.
Настройка с помощью JSON
В следующем примере представлено определение JSON для включения журнала сеанса в действии копирования:
{
"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/"
}
}
}
}
Свойство | Description | Допустимые значения | Обязательное поле |
---|---|---|---|
enableCopyActivityLog | Если установлено значение true, у вас будет возможность регистрировать скопированные файлы, пропущенные файлы или пропущенные строки. | Истина False (по умолчанию) |
No |
LogLevel | "Информация" будет записывать в журнал все скопированные файлы, пропущенные файлы и пропущенные строки. "Предупреждение" будет записывать только пропущенные файлы и пропущенные строки. | Сведения Предупреждение (по умолчанию) |
No |
enableReliableLogging | Если значение — true, действие Copy в надежном режиме будет очищать журналы непосредственно после копирования каждого файла в место назначения. При копировании большого количества файлов с включенным режимом надежного ведения журнала в действии Copy следует ожидать снижения пропускной способности, так как для каждого скопированного файла требуются двойные операции записи. Один запрос следует в конечное хранилище, а другой — в хранилище журналов. Действие Copy в оптимальном режиме освободит журналы с пакетом записей в течение определенного периода времени, а пропускная способность копирования будет затронута гораздо меньше. Полнота и своевременность ведения журнала в этом режиме не гарантируется, так как есть несколько возможностей того, что последний пакет событий журнала не был освобожден в файл журнала при сбое действия Copy. В этом сценарии вы увидите, что несколько файлов, скопированных в место назначения, не регистрируются. | Истина False (по умолчанию) |
No |
logLocationSettings | Группа свойств, которые можно использовать для указания расположения для хранения журналов сеанса. | No | |
linkedServiceName | Связанная служба хранилища BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения для хранения файлов журнала сеанса. | Имя связанной службы AzureBlobStorage или AzureBlobFS , которая ссылается на экземпляр хранилища, используемый для хранения файла журнала. |
No |
path | Путь к файлам журнала. | Укажите путь, по которому следует хранить файлы журнала. Если путь не указан, служба создаст контейнер самостоятельно. | No |
Наблюдение
Выходные данные действия Copy
После полного выполнения действия копирования можно увидеть путь файлов журналов из выходных данных каждого запуска действия Copy. Файлы журнала можно найти по пути: 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
, имена файлов журнала генерируются системой.
Схема файла журнала
В следующей таблице приведена схема файла журнала.
Столбец | Description |
---|---|
Метка времени | Метка времени на момент чтения, записи или пропуска объекта ADF. |
Уровень | Уровень ведения журнала для этого элемента. Может быть "Предупреждение" или "Информация". |
OperationName | Рабочее поведение действия Copy ADF для каждого объекта. Это может быть FileRead, FileWrite, FileSkip или TabularRowSkip. |
OperationItem | Имена файлов или пропущенные строки. |
Сообщение | Дополнительная информация о том, был ли файл прочитан из исходного хранилища или записан в целевое хранилище. Кроме того, это может привести к пропуску файла или строк. |
Вот пример файла журнала:
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 становится несогласованным, а это потому, что он был изменен другими приложениями при выполнении действия Copy 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
Связанный контент
См. другие статьи о действиях копирования: