Преобразование данных с помощью действия Spark в Azure Data Factory и Synapse Analytics

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

Совет

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

Действие Spark в фабрике данных и конвейере Synapse выполняет программу Spark в вашем кластере HDInsight или в кластере HDInsight по запросу. Данная статья основана на материалах статьи о действиях преобразования данных , в которой приведен общий обзор преобразования данных и список поддерживаемых действий преобразования. Если вы используете связанную службу Spark по требованию, служба автоматически создает кластер Spark для обработки данных, когда это необходимо, а затем удаляет его после завершения обработки.

Добавление действия Spark в конвейер с помощью пользовательского интерфейса

Чтобы использовать действие Spark в конвейере, выполните следующие действия:

  1. Выполните поиск элемента Spark на панели конвейера «Действия» и перетащите действие Spark на холст конвейера.

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

  3. Перейдите на вкладку Кластер HDI, чтобы выбрать или создать связанную службу для кластера HDInsight, которая будет использоваться для выполнения действия Spark.

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

  4. Перейдите на вкладку Script / Jar, чтобы выбрать или создать новую службу, связанную с учетной записью Azure Storage, где будет размещен ваш скрипт. Укажите путь к файлу для выполнения. Можно также настроить дополнительные сведения, включая пользователя прокси-сервера, конфигурацию отладки, а также аргументы и параметры конфигурации Spark, которые будут переданы в скрипт.

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

Свойства действия Spark

Ниже приведен пример определения JSON действия Spark.

{
    "name": "Spark Activity",
    "description": "Description",
    "type": "HDInsightSpark",
    "linkedServiceName": {
        "referenceName": "MyHDInsightLinkedService",
        "type": "LinkedServiceReference"
    },
    "typeProperties": {
        "sparkJobLinkedService": {
            "referenceName": "MyAzureStorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "rootPath": "adfspark",
        "entryFilePath": "test.py",
        "sparkConfig": {
            "ConfigItem1": "Value"
        },
        "getDebugInfo": "Failure",
        "arguments": [
            "SampleHadoopJobArgument1"
        ]
    }
}

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

Свойство Описание: Обязательное поле
имя Имя действия в конвейере. Да
описание Текст, описывающий, что делает это действие. Нет
тип Для действия Spark используется тип действия HDInsightSpark. Да
имяСвязанногоСервиса Имя связанной службы Spark HDInsight, в которой выполняется программа Spark. Дополнительные сведения об этой связанной службе см. в статье Связанные вычислительные службы. Да
SparkJobLinkedService Связанная служба Azure Storage, содержащая файл задания Spark, зависимости и журналы. Поддерживаются только Azure Blob Storage и ADLS Gen2 связанные службы. Если значение этого свойства не указано, используется хранилище, связанное с кластером HDInsight. Значение этого свойства может быть только службой, связанной с Azure Storage. Нет
корневой путь Контейнер и папка в Azure Blob Storage, содержащие файл Spark. Имя файла чувствительно к регистру. Подробнее о структуре этой папки см. в разделе о структуре папок (следующий раздел). Да
путь к файлу входа Относительный путь к корневой папке пакета и кода Spark. Файл записи должен быть файлом Python или файлом .jar. Да
className Основной класс приложения Java/Spark Нет
аргументы Список аргументов командной строки для программы Spark. Нет
proxyUser Учетная запись пользователя для олицетворения, используемая для выполнения программы Spark. Нет
sparkConfig Укажите значения для свойств конфигурации Spark, перечисленных в разделе Конфигурация Spark — свойства приложения. Нет
getDebugInfo Указывает, когда файлы журналов Spark копируются в хранилище Azure, используемое кластером HDInsight (или), указанным sparkJobLinkedService. Допустимые значения: Нет, Всегда или Ошибка. Значение по умолчанию: None. Нет

Структура папок

Задания Spark обеспечивают большую гибкость, чем задания Pig и Hive. Для заданий Spark можно предоставить несколько зависимостей, таких как jar-пакеты (помещенные в Java CLASSPATH), Python файлы (помещенные в PYTHONPATH) и любые другие файлы.

Создайте следующую структуру папок в хранилище BLOB-объектов Azure, на который ссылается связанная служба HDInsight. Затем передайте зависимые файлы в соответствующие вложенные папки в корневой папке, определенной значением entryFilePath. Например, загрузите файлы Python в подпапку pyFiles, а файлы jar — в подпапку jars корневой папки. Во время выполнения служба ожидает следующую структуру папок в хранилище BLOB-объектов Azure:

Путь Описание: Обязательное поле Тип
. (корень) Путь к корневому каталогу задания Spark в хранилище связанной службы. Да Папка
<Определяется пользователем> Путь, указывающий на входной файл задания Spark. Да Файлы
./jars Все файлы в этой папке загружаются и добавляются в класспас Java кластера. Нет Папка
./pyFiles Все файлы в этой папке передаются и помещаются в папку PYTHONPATH для кластера. Нет Папка
./files Все файлы в этой папке передаются и помещаются в рабочий каталог исполнителя. Нет Папка
./архивы Все файлы в этой папке не сжаты. Нет Папка
./logs Папка, в которой содержатся журналы из кластера Spark. Нет Папка

Ниже приведен пример хранилища, содержащего два файла задания Spark в Azure Blob Storage, на который ссылается связанная служба HDInsight.

SparkJob1
	main.jar
	files
		input1.txt
		input2.txt
	jars
		package1.jar
		package2.jar
	logs
	
	archives
	
	pyFiles

SparkJob2
	main.py
	pyFiles
		scrip1.py
		script2.py
	logs
	
	archives
	
	jars
	
	files
	

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