Обработка данных путем выполнения скриптов U-SQL в Azure Data Lake Analytics с помощью Azure Data Factory и Synapse Analytics

ПРИМЕНИМО К: Azure Data Factory Azure Synapse Analytics

Совет

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

Конвейер в рабочей области Azure Data Factory или Synapse Analytics обрабатывает данные в связанных службах хранилища с помощью связанных вычислительных служб. В нем содержится последовательность действий, каждое из которых выполняет определенную операцию обработки. В этой статье описывается активность Data Lake Analytics U-SQL, в рамках которой выполняется скрипт U-SQL на связанном вычислительном сервисе Azure Data Lake Analytics.

Создайте учетную запись Azure Data Lake Analytics перед созданием пайплайна с U-SQL действием Data Lake Analytics. Дополнительные сведения об Azure Data Lake Analytics см. в разделе Начало работы с Azure Data Lake Analytics.

Добавление действия U-SQL для Azure Data Lake Analytics в конвейер с пользовательским интерфейсом

Чтобы использовать действие U-SQL для Azure Data Lake Analytics в конвейере, выполните следующие действия:

  1. Найдите Data Lake в области Действия конвейера и перетащите элемент U-SQL на холст конвейера.

  2. Выберите новое действие U-SQL на холсте, если оно еще не выбрано.

  3. Перейдите на вкладку учетной записиADLA, чтобы выбрать или создать связанную службу Azure Data Lake Analytics, которая будет использоваться для выполнения действия U-SQL.

    Отображает пользовательский интерфейс для действия U-SQL.

  4. Перейдите на вкладку Скрипт, чтобы выбрать или создать связанную службу хранилища, и путь в месте хранения, в котором будет размещен скрипт.

    Отображает пользовательский интерфейс для вкладки

связанная служба Azure Data Lake Analytics

Вы создаете связанную службу Azure Data Lake Analytics для связывания Azure Data Lake Analytics вычислительной службы с рабочей областью Azure Data Factory или Synapse Analytics. Действие U-SQL в конвейере Data Lake Analytics относится к этой связанной службе.

В следующей таблице приведены описания универсальных свойств из определения JSON.

Свойство Описание: Обязательное поле
тип Свойству type необходимо присвоить значение AzureDataLakeAnalytics. Да
accountName Имя учетной записи Azure Data Lake Analytics. Да
dataLakeAnalyticsUri Azure Data Lake Analytics URI. Нет
subscriptionId идентификатор подписки Azure Нет
resourceGroupName имя группы ресурсов Azure Нет

Аутентификация субъекта-службы

Для связанного сервиса Azure Data Lake Analytics требуется аутентификация посредством служебного принципала для подключения к службе Azure Data Lake Analytics. Чтобы использовать аутентификацию с учетными данными основного пользователя, зарегистрируйте сущность приложения в Microsoft Entra ID и предоставьте ей доступ к сервисам Data Lake Analytics и Data Lake Store, которые он использует. Подробные инструкции см. в разделе Аутентификация между службами. Запишите следующие значения, которые используются для определения связанной службы:

  • Идентификатор приложения
  • ключ приложения.
  • Идентификатор клиента

Предоставьте главной служебной учетной записи разрешение для Azure Data Lake Analytics с помощью мастера Add User Wizard.

Используйте аутентификацию с использованием главного объекта службы, указав следующие свойства:

Свойство Описание: Обязательное поле
servicePrincipalId Укажите идентификатора клиента приложения. Да
servicePrincipalKey Укажите ключ приложения. Да
арендатор Укажите сведения о клиенте (доменное имя или идентификатор клиента), в котором находится приложение. Его можно получить, наведите указатель мыши в правом верхнем углу портала Azure. Да

Пример: Аутентификация с помощью служебного принципала

{
    "name": "AzureDataLakeAnalyticsLinkedService",
    "properties": {
        "type": "AzureDataLakeAnalytics",
        "typeProperties": {
            "accountName": "<account name>",
            "dataLakeAnalyticsUri": "<azure data lake analytics URI>",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "value": "<service principal key>",
                "type": "SecureString"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<optional, subscription id of ADLA>",
            "resourceGroupName": "<optional, resource group name of ADLA>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }       
    }
}

Дополнительные сведения о связанной службе см. в статье Службы, связанные с вычислениями.

U-SQL задача в Data Lake Analytics

Следующий фрагмент JSON определяет конвейер, включающий действие U-SQL Data Lake Analytics. Определение действия содержит ссылку на связанную службу Azure Data Lake Analytics, созданную ранее. Чтобы выполнить скрипт U-SQL в Data Lake Analytics, служба отправляет указанный вами скрипт в Data Lake Analytics, а необходимые входные и выходные данные определяются в скрипте для получения и вывода данных.

{
    "name": "ADLA U-SQL Activity",
    "description": "description",
    "type": "DataLakeAnalyticsU-SQL",
    "linkedServiceName": {
        "referenceName": "<linked service name of Azure Data Lake Analytics>",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "scriptLinkedService": {
            "referenceName": "<linked service name of Azure Data Lake Store or Azure Storage which contains the U-SQL script>",
            "type": "LinkedServiceReference"
        },
        "scriptPath": "scripts\\kona\\SearchLogProcessing.txt",
        "degreeOfParallelism": 3,
        "priority": 100,
        "parameters": {
            "in": "/datalake/input/SearchLog.tsv",
            "out": "/datalake/output/Result.tsv"
        }
    }   
}

В следующей таблице описаны имена и описания свойств, относящихся к этому действию.

Свойство Описание: Обязательное поле
имя Имя действия в конвейере. Да
описание Описание того, что делает активность. Нет
тип Для действия Data Lake Analytics с помощью U-SQL, тип действия — DataLakeAnalyticsU-SQL. Да
linkedServiceName Связанная служба с Azure Data Lake Analytics. Чтобы узнать больше об этой связанной службе, см. статью Связанные службы вычислений. Да
scriptPath Путь к папке, содержащей скрипт U-SQL В имени файла учитывается регистр. Да
scriptLinkedService Связанная служба, которая связывает Azure Data Lake Store или Azure Storage, содержащую скрипт. Да
степень параллелизма Максимальное количество узлов, используемых одновременно для выполнения задания. Нет
приоритет Определяет, какие из всех заданий в очереди должны запускаться первыми. Чем меньше число, тем выше приоритет. Нет
параметры Параметры для передачи в скрипт U-SQL. Нет
версия среды выполнения Версия среды выполнения обработчика U-SQL, которую нужно использовать. Нет
режим компиляции

Режим компиляции U-SQL. Может иметь одно из следующих значений: Semantic: выполнение только семантических проверок и необходимых проверок работоспособности. Full: выполнение полной компиляции, включая проверку синтаксиса, оптимизацию, создание кода и т. д. SingleBox: выполнение полной компиляции с параметром TargetType для SingleBox. Если не указать значение для этого свойства, сервер определит оптимальный режим компиляции.

Нет

См. SearchLogProcessing.txt для определения сценария.

Пример скрипта U-SQL

@searchlog =
    EXTRACT UserId          int,
            Start           DateTime,
            Region          string,
            Query           string,
            Duration        int,
            Urls            string,
            ClickedUrls     string
    FROM @in
    USING Extractors.Tsv(nullEscape:"#NULL#");

@rs1 =
    SELECT Start, Region, Duration
    FROM @searchlog
WHERE Region == "en-gb";

@rs1 =
    SELECT Start, Region, Duration
    FROM @rs1
    WHERE Start <= DateTime.Parse("2012/02/19");

OUTPUT @rs1   
    TO @out
      USING Outputters.Tsv(quoting:false, dateTimeFormat:null);

В приведенном выше примере входные и выходные данные скрипта определяются в параметрах @in и @out. Значения параметров @in и @out в сценарии U-SQL передаются службой динамически, с использованием раздела parameters.

Можно указать другие свойства, такие как degreeOfParallelism и приоритет, а также в определении конвейера для заданий, выполняемых в службе Azure Data Lake Analytics.

Динамические параметры

В примере определения конвейера параметрам in и out присвоено жестко заданные значения.

"parameters": {
    "in": "/datalake/input/SearchLog.tsv",
    "out": "/datalake/output/Result.tsv"
}

Вместо этого можно использовать динамические параметры. Например:

"parameters": {
    "in": "/datalake/input/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/data.tsv",
    "out": "/datalake/output/@{formatDateTime(pipeline().parameters.WindowStart,'yyyy/MM/dd')}/result.tsv"
}

В этом случае входные файлы по-прежнему берутся из папки /datalake/input, а выходные файлы создаются в папке /datalake/output. Имена файлов являются динамическими и зависят от времени начала окна, которое передается, когда активируется конвейер.

Ознакомьтесь со следующими ссылками, в которых описаны способы преобразования данных другими способами: