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

Важно!

Поддержка надстройки "Кластеры больших данных" Microsoft SQL Server 2019 будет прекращена. Мы прекратим поддержку Кластеров больших данных SQL Server 2019 28 февраля 2025 г. Все существующие пользователи SQL Server 2019 с Software Assurance будут полностью поддерживаться на платформе, и программное обеспечение будет продолжать поддерживаться с помощью накопительных обновлений SQL Server до этого времени. Дополнительные сведения см. в записи блога объявлений и в статье о параметрах больших данных на платформе 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 от Майкрософт в результатах поиска и щелкните Установить.

    Install Extension

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

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

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

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

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

    New file

  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.

    link cluster command

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

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

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

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

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

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

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

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

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

    Set a default cluster configuration

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

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

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

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

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

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

    Set default cluster configuration

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

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

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

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

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

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

    pyspark interactive context menu

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

    pyspark interactive python interactive window

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

    view job information

    Примечание.

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

    pyspark interactive python extension disabled

Отправка пакетного задания 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-адрес в браузере для отслеживания состояния задания.

    Submit Python job result

Конфигурация 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 configuration

Примечание.

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

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

POST /batches

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

name description type
файл Файл, содержащий приложение для выполнения путь (обязательно)
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 type
id Идентификатор сеанса INT
appId Идентификатор приложения для этого сеанса Строка
appInfo Подробные сведения о приложении Сопоставление key=val
Журнал Строки журнала список строк
state Состояние пакета строка
:- :- :-

Примечание.

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

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

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

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

    Spark & Hive Tools for Visual Studio Code IntelliSense object types

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

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

    Spark & Hive Tools for Visual Studio Code syntax highlights

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

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

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

Следующие шаги

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