Отправка заданий Spark в кластере больших данных SQL Server в Visual Studio CodeSubmit Spark jobs on SQL Server big data cluster in Visual Studio Code

Вы можете узнать, как с помощью Spark & Hive Tools для Visual Studio Code создавать и отправлять скрипты PySpark для Apache Spark. Сначала мы расскажем, как установить Spark & Hive tools в Visual Studio Code, а затем рассмотрим, как отправлять задания в Spark.Learn how to use Spark & Hive Tools for Visual Studio Code to create and submit PySpark scripts for Apache Spark, first we'll describe how to install the Spark & Hive tools in Visual Studio Code and then we'll walk through how to submit jobs to Spark.

Spark & Hive Tools можно установить на платформах, поддерживаемых Visual Studio Code, включая Windows, Linux и macOS.Spark & Hive Tools can be installed on platforms that are supported by Visual Studio Code, which include Windows, Linux, and macOS. Ниже указаны необходимые условия для различных платформ.Below you'll find the prerequisites for different platforms.

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

Для выполнения действий, описанных в этой статье, необходимо следующее:The following items are required for completing the steps in this article:

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

После выполнения предварительных требований можно установить Spark & Hive Tools для Visual Studio Code.After you have completed the prerequisites, you can install Spark & Hive Tools for Visual Studio Code. Для этого выполните следующие шаги:Complete the following steps to install Spark & Hive Tools:

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

  2. В строке меню выберите Вид > Расширения.From the menu bar, navigate to View > Extensions.

  3. В поле поиска введите Spark & Hive.In the search box, enter Spark & Hive.

  4. Выберите Spark & Hive Tools в результатах поиска и щелкните Установить.Select Spark & Hive Tools from the search results, and then select Install.

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

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

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

Выполните следующие действия, чтобы открыть рабочую папку и создать файл в Visual Studio Code:Complete the following steps to open a work folder, and create a file in Visual Studio Code:

  1. В строке меню выберите Файл > Открыть папку... > C:\SQLBDC\SQLBDCexample, а затем нажмите кнопку Выбрать папку.From the menu bar, navigate to File > Open Folder... > C:\SQLBDC\SQLBDCexample, then select the Select Folder button. Папка отображается в представлении проводника слева.The folder appears in the Explorer view on the left.

  2. В представлении проводника выберите эту папку, элемент SQLBDCexample и значок Новый файл рядом с рабочей папкой.From the Explorer view, select the folder, SQLBDCexample, and then the New File icon next to the work folder.

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

  3. Присвойте новому файлу имя с расширением .py (скрипт Spark).Name the new file with the .py (Spark script) file extension. В этом примере используется HelloWorld.py.This example uses HelloWorld.py.

  4. Скопируйте и вставьте в файл скрипта следующий код:Copy and paste the following code into the script file:

     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.Before you can submit scripts to your clusters from Visual Studio Code, you need to link a SQL Server big data cluster.

  1. В строке меню выберите Вид > Палитра команд... и введите Spark / Hive: Link a Cluster (Связать кластер).From the menu bar navigate to View > Command Palette..., and enter Spark / Hive: Link a Cluster.

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

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

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

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

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

  6. Задайте отображаемое имя кластера (необязательно).Set the display name of the cluster (Optional).

  7. Выведите список кластеров и просмотрите представление OUTPUT для проверки.List clusters, review OUTPUT view for verification.

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

  1. В строке меню выберите Вид > Палитра команд... и введите Spark / Hive: List Cluster (Перечислить кластер).From the menu bar navigate to View > Command Palette..., and enter Spark / Hive: List Cluster.

  2. Просмотрите представление OUTPUT.Review the OUTPUT view. В нем отображаются связанные кластеры.The view will show your linked cluster(s).

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

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

  1. Снова откройте созданную ранее папку SQLBDCexample, если она была закрыта.Re-Open the folder SQLBDCexample created earlier if closed.

  2. Выберите созданный ранее файл HelloWorld.py, чтобы открыть его в редакторе скриптов.Select the file HelloWorld.py created earlier and it will open in the script editor.

  3. Свяжите кластер, если вы еще не сделали этого.Link a cluster if you haven't yet done so.

  4. Щелкните редактор скриптов правой кнопкой мыши и выберите пункт Spark/Hive: Set Default Cluster (Задать кластер по умолчанию).Right-click the script editor, and select Spark / Hive: Set Default Cluster.

  5. Выберите кластер в качестве используемого по умолчанию для текущего файла скрипта.Select a cluster as the default cluster for the current script file. Средства автоматически обновляют файл конфигурации .VSCode\settings.json.The tools automatically update the configuration file .VSCode\settings.json.

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

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

Вы можете отправлять интерактивные запросы PySpark, выполнив следующие действия:You can submit interactive PySpark queries by following the steps below:

  1. Снова откройте созданную ранее папку SQLBDCexample, если она была закрыта.Reopen the folder SQLBDCexample created earlier if closed.

  2. Выберите созданный ранее файл HelloWorld.py, чтобы открыть его в редакторе скриптов.Select the file HelloWorld.py created earlier and it will open in the script editor.

  3. Свяжите кластер, если вы еще не сделали этого.Link a cluster if you haven't yet done so.

  4. Выберите весь код, щелкните редактор скриптов правой кнопкой мыши и выберите пункт Spark: PySpark Interactive (Интерактивная среда PySpark), чтобы отправить запрос, либо используйте сочетание клавиш CTRL+ALT+I.Choose all the code and right-click the script editor, select Spark: PySpark Interactive to submit the query, or use shortcut Ctrl + Alt + I.

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

  5. Выберите кластер, если вы не указали кластер по умолчанию.Select the cluster if you haven't specified a default cluster. Через несколько секунд на новой вкладке отображаются результаты интерактивного окна Python. Эти средства также позволяют отправить блок кода вместо целого файла скрипта с помощью контекстного меню.After a few moments, the Python Interactive results appear in a new tab. The tools also allow you to submit a block of code instead of the whole script file using the context menu.

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

  6. Введите "%%info" и нажмите клавиши SHIFT+ВВОД для просмотра сведений о задании.Enter "%%info", and then press Shift + Enter to view job information. (необязательно)(Optional)

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

    Примечание

    Если флажок Python Extension Enabled (Расширение Python включено) в параметрах снят (параметр по умолчанию установлен), отправленные результаты интерактивной среды pyspark будут использовать старое окно.When Python Extension Enabled is unchecked in the settings (The default setting is checked), the submitted pyspark interaction results will use the old window.

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

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

  1. Снова откройте созданную ранее папку SQLBDCexample, если она была закрыта.Reopen the folder SQLBDCexample created earlier if closed.

  2. Выберите созданный ранее файл HelloWorld.py, чтобы открыть его в редакторе скриптов.Select the file HelloWorld.py created earlier and it will open in the script editor.

  3. Свяжите кластер, если вы еще не сделали этого.Link a cluster if you haven't yet done so.

  4. Щелкните редактор скриптов правой кнопкой мыши и выберите пункт Spark: PySpark Batch (Пакет PySpark), чтобы отправить запрос, либо используйте сочетание клавиш CTRL+ALT+H.Right-click the script editor, and then select Spark: PySpark Batch, or use shortcut Ctrl + Alt + H.

  5. Выберите кластер, если вы не указали кластер по умолчанию.Select the cluster if you haven't specified a default cluster. После отправки задания Python журналы отправки отображаются в окне вывода в Visual Studio Code.After you submit a Python job, submission logs appear in the OUTPUT window in Visual Studio Code. Также отображаются Spark UI URL (URL-адрес пользовательского интерфейса Spark) и Yarn UI URL (URL-адрес пользовательского интерфейса Yarn).The Spark UI URL and Yarn UI URL are shown as well. Вы можете открыть этот URL-адрес в браузере для отслеживания состояния задания.You can open the URL in a web browser to track the job status.

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

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

Конфигурация Apache Livy поддерживается, и ее можно настроить в файле .VSCode\settings.json в папке рабочей области.Apache Livy configuration is supported, it can be set at the .VSCode\settings.json in the work space folder. Сейчас конфигурация Livy поддерживает только скрипт Python.Currently, Livy configuration only supports Python script. Дополнительные сведения см. в файле сведений Livy.More details, see Livy README.

Активация конфигурации LivyHow to trigger Livy configuration

Метод 1Method 1

  1. В строке меню выберите Файл > Настройки > Параметры.From the menu bar, navigate to File > Preferences > Settings.
  2. В текстовом поле Search settings (Параметры поиска) введите HDInsight Job Sumission: Livy Conf (Отправка задания HDInsight: конфигурация Livy).In the Search settings text box enter HDInsight Job Sumission: Livy Conf.
  3. Выберите Изменить в settings.json для соответствующего результата поиска.Select Edit in settings.json for the relevant search result.

Метод 2Method 2

Отправьте файл и обратите внимание, что папка .vscode автоматически добавляется в рабочую папку.Submit a file, notice the .vscode folder is added automatically to the work folder. Чтобы найти конфигурацию Livy, щелкните .vscode\settings.json.You can find the Livy configuration by clicking .vscode\settings.json.

  • Параметры проекта:The project settings:

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

Примечание

Для параметров driverMomory и executorMomry задайте значение с единицей измерения, например 1g или 1024m.For settings driverMomory and executorMomry, set the value with unit, for example 1g or 1024m.

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

POST /batchesPOST /batches

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

namename descriptiondescription typetype
файлfile Файл, содержащий приложение для выполненияFile containing the application to execute путь (обязательно)path (required)
proxyUserproxyUser Пользователь, олицетворяемый при выполнении заданияUser to impersonate when running the job строкаstring
classNameclassName Класс main приложения в Java/SparkApplication Java/Spark main class строкаstring
argsargs Аргументы командной строки для приложенияCommand line arguments for the application список строкlist of strings
jarsjars Файлы JAR для использования в этом сеансеjars to be used in this session список строкList of string
pyFilespyFiles Файлы Python для использования в этом сеансеPython files to be used in this session список строкList of string
filesfiles Файлы для использования в этом сеансеfiles to be used in this session список строкList of string
driverMemorydriverMemory Объем памяти, используемый для процесса драйвераAmount of memory to use for the driver process строкаstring
driverCoresdriverCores Число ядер, используемых для процесса драйвераNumber of cores to use for the driver process INTint
executorMemoryexecutorMemory Объем памяти, используемый для каждого процесса исполнителяAmount of memory to use per executor process строкаstring
executorCoresexecutorCores Число ядер, используемых для каждого исполнителяNumber of cores to use for each executor INTint
numExecutorsnumExecutors Число исполнителей, которые должны быть запущены для этого сеансаNumber of executors to launch for this session INTint
archivesarchives Архивы для использования в этом сеансеArchives to be used in this session список строкList of string
очередьqueue Имя очереди YARN, куда выполнена отправкаThe name of the YARN queue to which submitted строкаstring
namename Имя сеансаThe name of this session строкаstring
confconf Свойства конфигурации SparkSpark configuration properties Сопоставление key=valMap of key=val

Текст ответаResponse Body

Созданный объект пакета.The created batch object.

namename descriptiondescription typetype
идентификаторid Идентификатор сеансаThe session id INTint
appIdappId Идентификатор приложения для этого сеансаThe application id of this session СтрокаString
appInfoappInfo Подробные сведения о приложенииThe detailed application info Сопоставление key=valMap of key=val
loglog Строки журналаThe log lines список строкlist of strings
statestate Состояние пакетаThe batch state строкаstring

Примечание

Назначенная конфигурация Livy будет отображена в области вывода при отправке скрипта.The assigned Livy config will display in output pane when submit script.

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

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

  • Автозавершение IntelliSense.IntelliSense autocomplete. Всплывающие предложения для ключевых слов, методов, переменных и т. п.Suggestions pop up for keyword, methods, variables, and so on. Разные значки представляют различные типы объектов.Different icons represent different types of objects.

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

  • Маркер ошибок IntelliSense.IntelliSense error marker. Языковая служба подчеркивает ошибки редактирования для скрипта Hive.The language service underlines the editing errors for the Hive script.

  • Выделение синтаксиса.Syntax highlights. Языковая служба использует разные цвета, чтобы было легче различать переменные, ключевые слова, типы данных, функции и т. п.The language service uses different colors to differentiate variables, keywords, data type, functions, and so on.

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

  1. В строке меню выберите Вид > Палитра команд... и введите Spark / Hive: Unlink a Cluster (Удалить связь кластера).From the menu bar navigate to View > Command Palette..., and then enter Spark / Hive: Unlink a Cluster.

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

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

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

Дополнительные сведения о кластере больших данных SQL Server и связанных сценариях см. в статье Кластеры больших данных SQL ServerSQL Server Big Data Clusters.For more information on SQL Server big data cluster and related scenarios, See Кластеры больших данных SQL ServerSQL Server Big Data Clusters.