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

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

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

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

Добавление действия 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.

    Shows the UI for a U-SQL activity.

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

    Shows the UI for the Script tab for a U-SQL activity.

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

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

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

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

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

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

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

Предоставьте разрешение субъекта-службы службе Azure Data Lake Analytics с помощью мастера добавления пользователей.

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

Свойство Описание: Обязательное поле
servicePrincipalId Укажите идентификатора клиента приложения. Да
servicePrincipalKey Укажите ключ приложения. Да
tenant Укажите сведения о клиенте (доменное имя или идентификатор клиента), в котором находится приложение. Эти сведения можно получить, наведя указатель мыши на правый верхний угол страницы портала 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"
        }       
    }
}

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

Действие U-SQL в Data Lake Analytics

В следующем фрагменте кода JSON определяется конвейер с действием U-SQL в аналитике озера данных. Определение действия содержит ссылку на созданную ранее связанную службу аналитики озера данных Azure. Чтобы выполнить скрипт U-SQL Data Lake Analytics, служба отправляет указанный скрипт в 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"
        }
    }   
}

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

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

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

No

Определение сценария см. в разделе Пример скрипта U-SQL.

Пример скрипта 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.

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

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

В примере определения конвейера параметрам 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. Имена файлов являются динамическими и зависят от времени начала окна, которое передается, когда активируется конвейер.

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