Отправка заданий Spark в кластере больших данных SQL Server в Visual Studio Code

Важно!

Поддержка надстройки "Кластеры больших данных" Microsoft SQL Server 2019 будет прекращена. Мы прекратим поддержку Кластеров больших данных SQL Server 2019 28 февраля 2025 г. Дополнительные сведения см. в разделе Параметры больших данных на платформе Microsoft SQL Server.

Вы можете узнать, как с помощью Spark & Hive Tools для Visual Studio Code создавать и отправлять скрипты PySpark для Apache Spark. Сначала мы расскажем, как установить Spark & Hive tools в Visual Studio Code, а затем рассмотрим, как отправлять задания в Spark.

Spark & Hive Tools можно установить на платформах, поддерживаемых Visual Studio Code, включая Windows, Linux и macOS. Ниже указаны необходимые условия для различных платформ.

Предварительные требования

Для выполнения действий, описанных в этой статье, необходимо следующее:

Установка Spark & Hive Tools

После выполнения предварительных требований можно установить Spark & Hive Tools для Visual Studio Code. Для этого выполните следующие шаги:

  1. Откройте Visual Studio Code.

  2. В строке меню выберите Вид > Расширения.

  3. В поле поиска введите Spark & Hive.

  4. Выберите Spark & Hive Tools от Майкрософт в результатах поиска и щелкните Установить.

    Установка расширения

  5. При необходимости выполните перезагрузку.

Открытие рабочей папки

Выполните следующие действия, чтобы открыть рабочую папку и создать файл в Visual Studio Code:

  1. В строке меню выберите Файл > Открыть папку... > C:\SQLBDC\SQLBDCexample, а затем нажмите кнопку Выбрать папку. Папка отображается в представлении проводника слева.

  2. В представлении проводника выберите эту папку, элемент SQLBDCexample и значок Новый файл рядом с рабочей папкой.

    Создание файла

  3. Присвойте новому файлу имя с расширением .py (скрипт Spark). В этом примере используется HelloWorld.py.

  4. Скопируйте и вставьте в файл скрипта следующий код:

    import sys
    from operator import add
    from pyspark.sql import SparkSession, Row
    
    spark = SparkSession\
       .builder\
       .appName("PythonWordCount")\
       .getOrCreate()
    
    data = [Row(col1='pyspark and spark', col2=1), Row(col1='pyspark', col2=2), Row(col1='spark vs hadoop', col2=2), Row(col1='spark', col2=2), Row(col1='hadoop', col2=2)]
    df = spark.createDataFrame(data)
    lines = df.rdd.map(lambda r: r[0])
    
    counters = lines.flatMap(lambda x: x.split(' ')) \
       .map(lambda x: (x, 1)) \
       .reduceByKey(add)
    
    output = counters.collect()
    sortedCollection = sorted(output, key = lambda r: r[1], reverse = True)
    
    for (word, count) in sortedCollection:
       print("%s: %i" % (word, count))
    

Прежде чем отправлять скрипты в кластеры из Visual Studio Code, нужно связать кластер больших данных SQL Server.

  1. В строке меню выберите Вид > Палитра команд... и введите Spark / Hive: Link a Cluster.

    команда связывания кластера

  2. Выберите тип связанного кластера SQL Server Big Data (Большие данные SQL Server).

  3. Введите конечную точку больших данных SQL Server.

  4. Введите имя пользователя кластера больших данных SQL Server.

  5. Введите пароль для администратора пользователей.

  6. Задайте отображаемое имя кластера больших данных (необязательно).

  7. Выведите список кластеров и просмотрите представление OUTPUT для проверки.

список кластеров

  1. В строке меню выберите Вид > Палитра команд... и введите Spark / Hive: List Cluster.

  2. Просмотрите представление OUTPUT. В нем отображаются связанные кластеры.

    Настройка конфигурации кластера по умолчанию

Задание кластера по умолчанию

  1. Снова откройте созданную ранее папку SQLBDCexample, если она была закрыта.

  2. Выберите созданный ранее файл HelloWorld.py, чтобы открыть его в редакторе скриптов.

  3. Свяжите кластер, если вы еще не сделали этого.

  4. Щелкните редактор скриптов правой кнопкой мыши и выберите Spark / Hive: задать кластер по умолчанию.

  5. Выберите кластер в качестве используемого по умолчанию для текущего файла скрипта. Средства автоматически обновляют файл конфигурации .VSCode\settings.json.

    Настройка конфигурации кластера по умолчанию

Отправка интерактивных запросов PySpark

Вы можете отправлять интерактивные запросы PySpark, выполнив следующие действия:

  1. Снова откройте созданную ранее папку SQLBDCexample, если она была закрыта.

  2. Выберите созданный ранее файл HelloWorld.py, чтобы открыть его в редакторе скриптов.

  3. Свяжите кластер, если вы еще не сделали этого.

  4. Выберите весь код и щелкните правой кнопкой мыши редактор скриптов, выберите Spark: PySpark Interactive, чтобы отправить запрос, или используйте сочетание клавиш CTRL+ALT+I.

    контекстное меню интерактивной среды pyspark

  5. Выберите кластер, если вы не указали кластер по умолчанию. Через несколько секунд результаты Python Interactive отобразятся на новой вкладке. Средства также позволяют отправить блок кода вместо всего файла скрипта с помощью контекстного меню.

    интерактивная среда pyspark, интерактивное окно python

  6. Введите "%%info" и нажмите клавиши SHIFT+ВВОД для просмотра сведений о задании. (необязательно)

    просмотр сведений о задании

    Примечание

    Если флажок Python Extension Enabled (Расширение Python включено) в параметрах снят (параметр по умолчанию установлен), отправленные результаты интерактивной среды pyspark будут использовать старое окно.

    интерактивная среда pyspark, расширение python отключено

Отправка пакетного задания PySpark

  1. Снова откройте созданную ранее папку SQLBDCexample, если она была закрыта.

  2. Выберите созданный ранее файл HelloWorld.py, чтобы открыть его в редакторе скриптов.

  3. Свяжите кластер, если вы еще не сделали этого.

  4. Щелкните правой кнопкой мыши окно редактора скриптов, а затем выберите Spark: PySpark Batch или воспользуйтесь сочетанием клавиш CTRL+ALT+H.

  5. Выберите кластер, если вы не указали кластер по умолчанию. После отправки задания Python журналы отправки отображаются в окне вывода в Visual Studio Code. Также отображаются Spark UI URL (URL-адрес пользовательского интерфейса Spark) и Yarn UI URL (URL-адрес пользовательского интерфейса Yarn). Вы можете открыть этот URL-адрес в браузере для отслеживания состояния задания.

    Отправка результата задания Python

Конфигурация Apache Livy

Конфигурация Apache Livy поддерживается, и ее можно настроить в файле .VSCode\settings.json в папке рабочей области. Сейчас конфигурация Livy поддерживает только скрипт Python. Дополнительные сведения см. в файле сведений Livy.

Активация конфигурации Livy

Метод 1

  1. В строке меню выберите Файл > Настройки > Параметры.
  2. В текстовое поле Параметры поиска введите HDInsight Job Submission: Livy Conf.
  3. Выберите Изменить в settings.json для соответствующего результата поиска.

Метод 2

Отправьте файл и обратите внимание, что папка .vscode автоматически добавляется в рабочую папку. Чтобы найти конфигурацию Livy, щелкните settings.json в .vscode.

Параметры проекта:

Конфигурация Livy

Примечание

Для параметров driverMemory и executorMemory задайте значение с единицей измерения, например 1gb или 1024mb.

Поддерживаемые конфигурации Livy

POST /batches

Текст запроса

name description тип
файл Файл, содержащий приложение для выполнения путь (обязательно)
proxyUser Пользователь, олицетворяемый при выполнении задания строка
className Класс main приложения в Java/Spark строка
args Аргументы командной строки для приложения список строк
jars Файлы JAR для использования в этом сеансе список строк
pyFiles Файлы Python для использования в этом сеансе список строк
files Файлы для использования в этом сеансе список строк
driverMemory Объем памяти, используемый для процесса драйвера строка
driverCores Число ядер, используемых для процесса драйвера INT
executorMemory Объем памяти, используемый для каждого процесса исполнителя строка
executorCores Число ядер, используемых для каждого исполнителя INT
numExecutors Число исполнителей, которые должны быть запущены для этого сеанса INT
archives Архивы для использования в этом сеансе список строк
очередь Имя очереди YARN, куда выполнена отправка строка
name Имя сеанса строка
conf Свойства конфигурации Spark Сопоставление key=val
:- :- :-

Текст ответа

Созданный объект пакета.

name description тип
идентификатор Идентификатор сеанса INT
appId Идентификатор приложения для этого сеанса Строка
appInfo Подробные сведения о приложении Сопоставление key=val
log Строки журнала список строк
Состояние Состояние пакета строка
:- :- :-

Примечание

Назначенная конфигурация Livy будет отображена в области вывода при отправке скрипта.

Дополнительные функции

В Spark & Hive для Visual Studio Code поддерживаются следующие функции:

  • Автозавершение IntelliSense. Всплывающие предложения для ключевых слов, методов, переменных и пр. Разные значки представляют различные типы объектов.

    Типы объектов IntelliSense в Spark & Hive Tools для Visual Studio Code

  • Маркер ошибок IntelliSense. Языковая служба подчеркивает ошибки редактирования для скрипта Hive.

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

    Выделение синтаксиса в Spark & Hive Tools для Visual Studio Code

  1. В строке меню выберите Вид > Палитра команд и введите Spark / Hive: Unlink a Cluster.

  2. Выберите кластер для удаления связи.

  3. Просмотрите представление OUTPUT для проверки.

Дальнейшие действия

Дополнительные сведения о кластере больших данных SQL Server и связанных сценариях см. в статье Кластеры больших данных SQL Server.