Использование средств Spark и Hive для Visual Studio Code

Узнайте, как использовать Apache Spark & Hive Tools для Visual Studio Code. Эти средства используются для создания и отправки пакетных заданий Hive, интерактивных запросов Apache Hive и сценариев PySpark для Apache Spark. Сначала мы покажем, как установить Spark & Hive Tools в Visual Studio Code. Затем мы рассмотрим, как отправлять задания в Spark & Hive Tools.

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

Необходимые компоненты

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

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

После выполнения предварительных требований можно установить Spark & Hive Tools для Visual Studio Code в соответствии с приведенными ниже инструкциями.

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

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

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

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

    Spark & Hive for Visual Studio Code Python install.

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

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

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

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

  2. В интерфейсе проводника выберите папку HDexample, а затем — значок Создать файл рядом с рабочей папкой:

    visual studio code new file icon.

  3. Назовите этот новый файл, используя расширение .hql (запросы Hive) или .py (сценарий Spark). В этом примере используется файл HelloWorld.hql.

Настройка среды Azure

Если вы пользователь национального облака, выполните следующие действия, чтобы сначала настроить среду Azure, а затем используйте команду Azure: Sign In, чтобы войти в Azure.

  1. Выберите Файл>Настройки>Параметры.

  2. Выполните поиск по следующей строке: Azure: Cloud.

  3. Выберите национальное облако в списке:

    Set default login entry configuration.

Подключение к учетной записи Azure

Прежде чем отправлять скрипты в кластеры из Visual Studio Code, пользователь может войти в подписку Azure или связать кластер HDInsight. Для подключения к кластеру HDInsight используйте имя пользователя/пароль или учетные данные, присоединенные к домену, для кластера ESP. Для подключения к Azure выполните следующие действия.

  1. В строке меню перейдите в меню "Просмотр>палитры команд..." и введите Azure: войдите:

    Spark & Hive Tools for Visual Studio Code login.

  2. Следуйте инструкциям по входу, чтобы войти в Azure. После подключения имя учетной записи Azure будет отображаться в строке состояния внизу окна Visual Studio Code.

Вы можете связать обычный кластер с помощью управляемого имени пользователя Apache Ambari, а защищенный кластер Hadoop с пакетом безопасности Enterprise — с помощью имени пользователя домена (например, user1@contoso.com).

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

    Command Palette link cluster command.

  2. Выберите связанный тип кластера Azure HDInsight.

  3. Введите URL-адрес кластера HDInsight.

  4. Введите имя пользователя Ambari; значение по умолчанию — admin.

  5. Введите пароль Ambari.

  6. Выберите тип кластера.

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

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

    Примечание.

    Если кластер зарегистрирован в подписке Azure и связан, используется имя пользователя и пароль для связывания.

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

  2. Выберите связанный тип кластера Generic Livy Endpoint (Общая конечная точка Livy).

  3. Введите универсальную конечную точку Livy. Например: http://10.172.41.42:18080.

  4. Выберите тип авторизации Базовый или Нет. Выберите Базовый:

    1. Введите имя пользователя Ambari; значение по умолчанию — admin.

    2. Введите пароль Ambari.

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

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

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

  2. Выберите подписку, которую хотите использовать.

  3. Просмотрите представление OUTPUT. В этом представлении отображается связанный кластер (или кластеры) и все кластеры в подписке Azure.

    Set a default cluster configuration.

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

  1. Повторно откройте папку HDexample, которая упоминалась ранее, если она была закрыта.

  2. Выберите файл HelloWorld.hql, созданный ранее. Он откроется в редакторе скриптов.

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

  4. Подключитесь к учетной записи Azure или привяжите кластер, если вы еще этого не сделали.

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

    Set default cluster configuration.

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

Средства Spark и Hive для Visual Studio Code позволяют отправлять интерактивные запросы Hive и пакетные сценарии Hive в кластеры.

  1. Повторно откройте папку HDexample, которая упоминалась ранее, если она была закрыта.

  2. Выберите файл HelloWorld.hql, созданный ранее. Он откроется в редакторе скриптов.

  3. Скопируйте следующий код и вставьте его в файл Hive, а затем сохраните файл.

    SELECT * FROM hivesampletable;
    
  4. Подключитесь к учетной записи Azure или привяжите кластер, если вы еще этого не сделали.

  5. Щелкните правой кнопкой мыши окно редактора сценариев и выберите Hive Interactive (Интерактивный запрос Hive), чтобы отправить запрос, или воспользуйтесь сочетанием клавиш Ctrl+Alt+I. Выберите Hive: пакет, чтобы отправить сценарий, или используйте сочетание клавиш Ctrl+Alt+H.

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

    Interactive Apache Hive query result.

    • Область результатов: вы можете сохранить все результаты в виде файла CSV, JSON или Excel по локальному пути или просто выбрать несколько строк.

    • Область сообщений: выбрав номер строки, вы можете перейти к первой строке выполняемого скрипта.

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

Предварительные требования для интерактивного использования Pyspark

Обратите внимание, что версия расширения Jupyter (ms-jupyter): версия 2022.1.1001614873 и версия расширения Python (ms-python): v2021.12.1559732655, Python 3.6.x и 3.7.x требуются для интерактивных запросов PySpark в HDInsight.

Пользователи могут работать с PySpark в интерактивном режиме, как описано ниже.

Использование интерактивной команды PySpark в файле PY

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

  1. Повторно откройте папку HDexample, которая упоминалась ранее, если она была закрыта.

  2. Создайте новый файл HelloWorld.py, выполнив приведенные выше инструкции.

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

    from operator import add
    from pyspark.sql import SparkSession 
    spark = SparkSession.builder \ 
          .appName('hdisample') \ 
          .getOrCreate() 
    lines = spark.read.text("/HdiSamples/HdiSamples/FoodInspectionData/README").rdd.map(lambda r: r[0])
    counters = lines.flatMap(lambda x: x.split(' ')) \
                 .map(lambda x: (x, 1)) \
                 .reduceByKey(add)
    
    coll = counters.collect()
    sortedCollection = sorted(coll, key = lambda r: r[1], reverse = True)
    
    for i in range(0, 5):
         print(sortedCollection[i])
    
  4. В правом нижнем углу окна появится запрос на установку ядра PySpark или Synapse Pyspark. Можно нажать кнопку Установить, чтобы перейти к установке PySpark или Synapse Pyspark, или Пропустить, чтобы пропустить этот шаг.

    Screenshot shows an option to skip the PySpark installation.

  5. Если вы хотите установить его позже, последовательно выберите Файл>Настройки>Параметры, а затем снимите флажок Hdinsight: Enable Skip PySpark Installation (Разрешить пропуск установки PySpark).

    Screenshot shows the option to Enable Skip Pyspark Installation.

  6. Если на шаге 4 установка PySpark или Synapse PySpark прошла успешно, в правом нижнем углу окна появится сообщение PySpark installed successfully (Расширение PySpark успешно установлено). Нажмите кнопку Перезагрузить, чтобы перезагрузить окно.

    pyspark installed successfully.

  7. В строке меню перейдите в меню "Просмотреть>палитру команд" или используйте сочетание клавиш SHIFT+P и введите Python: выберите интерпретатор для запуска Jupyter Server.

    select interpreter to start jupyter server.

  8. Выберите параметр python ниже.

    choose the below option.

  9. В строке меню перейдите в меню "Просмотреть>палитру команд" или используйте сочетание клавиш SHIFT+CTRL+P и введите "Разработчик: перезагрузить окно".

    reload window.

  10. Подключитесь к учетной записи Azure или привяжите кластер, если вы еще этого не сделали.

  11. Выберите весь код, щелкните редактор скриптов правой кнопкой мыши и выберите пункт Spark: PySpark Interactive/Synapse: PySpark Interactive (Spark: интерактивный запрос PySpark/Synapse: интерактивный запрос PySpark), чтобы отправить запрос.

    pyspark interactive context menu.

  12. Выберите кластер, если вы не указали кластер по умолчанию. Через несколько секунд на новой вкладке отображаются результаты интерактивной команды Python. Щелкните PySpark, чтобы переключить ядро на PySpark/Synapse PySpark, и код будет выполнен успешно. Если вы хотите переключиться на ядро Synapse PySpark, рекомендуется отключить автоматическую настройку параметров на портале Azure. В противном случае для активации кластера и установки ядра synapse при первом использовании может потребоваться много времени. Эти средства также позволяют отправить блок кода вместо целого файла скрипта с помощью контекстного меню.

    pyspark interactive python interactive window.

  13. Введите %%info и нажмите клавиши Shift+Enter, чтобы посмотреть сведения о задании (необязательно):

    pyspark interactive view job information.

Средство также поддерживает запросы Spark SQL:

pyspark interactive view result.

Выполнение интерактивного запроса в файле PY с помощью комментария #%%

  1. Добавьте #%% перед кодом Py, чтобы работать, как с блокнотом.

    add #%%.

  2. Щелкните Выполнить ячейку. Через несколько секунд на новой вкладке появятся результаты интерактивного окна Python. Щелкните PySpark, чтобы переключить ядро на PySpark/Synapse PySpark, затем щелкните Выполнить ячейку снова, и код будет успешно выполнен.

    run cell results.

Использование поддержки IPYNB из расширения Python

  1. Записную книжку Jupyter Notebook можно создать с помощью команды из палитры команд или путем создания нового IPYNB-файла в рабочей области. Дополнительные сведения см. в статье Работа с записными книжками Jupyter Notebook в Visual Studio Code.

  2. Нажмите кнопку Выполнить ячейку, выполните инструкции на экране, чтобы задать стандартный пул Spark (настоятельно рекомендуется перед каждым открытием записной книжки устанавливать стандартный кластер или пул), а затем перезагрузите окно.

    set the default spark pool and reload.

  3. Щелкните PySpark, чтобы переключить ядро на PySpark / Synapse PySpark, а затем щелкните Выполнить ячейку, после чего отобразится результат.

    run ipynb results.

Примечание.

Что касается ошибок установки Synapse Pyspark, так как ее зависимость больше не будет поддерживаться другой командой, эта возможность также не будет поддерживаться. Если вы пытаетесь использовать интерактивную среду Synapse Pyspark, переключитесь на использование Azure Synapse Analytics вместо нее. Это долгосрочное изменение.

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

  1. Повторно откройте папку HDexample, которая упоминалась ранее, если она была закрыта.

  2. Создайте новый файл BatchFile.py, выполнив приведенные выше инструкции.

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

    from __future__ import print_function
    import sys
    from operator import add
    from pyspark.sql import SparkSession
    if __name__ == "__main__":
        spark = SparkSession\
            .builder\
            .appName("PythonWordCount")\
            .getOrCreate()
    
        lines = spark.read.text('/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv').rdd.map(lambda r: r[0])
        counts = lines.flatMap(lambda x: x.split(' '))\
                   .map(lambda x: (x, 1))\
                    .reduceByKey(add)
        output = counts.collect()
        for (word, count) in output:
            print("%s: %i" % (word, count))
        spark.stop()
    
  4. Подключитесь к учетной записи Azure или привяжите кластер, если вы еще этого не сделали.

  5. Щелкните правой кнопкой мыши по редактору скриптов, а затем выберите Spark: PySpark Batch или Synapse: PySpark Batch*.

  6. Выберите кластер/пул spark, в который необходимо отправить задание PySpark.

    Submit Python job result output.

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

Интеграция с брокером удостоверений HDInsight (HIB)

Подключение к кластеру HDInsight ESP с помощью брокера удостоверений (HIB)

Вы можете выполнить обычный вход в подписку Azure, чтобы подключиться к кластеру HDInsight ESP с брокером удостоверений (HIB). После входа вы увидите список кластеров в Azure Explorer. Указания см. в разделе Подключение к кластеру HDInsight.

Выполнение задания Hive или PySpark в кластере HDInsight ESP с брокером удостоверений (HIB)

Отправку задания в кластер HDInsight ESP с брокером удостоверений (HIB) можно выполнить обычным образом. Дополнительные инструкции см. в разделе Отправка интерактивных запросов Hive и пакетных сценариев Hive.

Чтобы выполнить интерактивное задание PySpark, отправку задания в кластер HDInsight ESP с брокером удостоверений (HIB) можно выполнить обычным образом. См. раздел «Отправка интерактивных запросов PySpark».

Чтобы выполнить пакетное задание PySpark, отправку задания в кластер HDInsight ESP с брокером удостоверений (HIB) можно выполнить обычным образом. Дополнительные инструкции см. в разделе Отправка пакетного задания PySpark.

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

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

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

Метод 1

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

Метод 2.

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

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

    HDInsight Apache Livy configuration.

    Примечание.

    Для параметров driverMemory и executorMemory задайте значение и единицу измерения. Например: 1 ГБ или 1024 МБ.

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

    Пакеты POST

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

    name описание 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 описание type
    Идентификатор ИД сеанса Int
    appId Идентификатор приложения для этого сеанса Строка
    appInfo Подробные сведения о приложении Сопоставление key=val
    Журнал Строки журнала Список строк
    state Состояние пакета Строка

    Примечание.

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

Интеграция с Azure HDInsight в проводнике

Вы можете предварительно просмотреть таблицу Hive в кластерах напрямую с помощью Azure HDInsight Explorer.

  1. Подключитесь к учетной записи Azure, если вы еще этого не сделали.

  2. Щелкните значок Azure в крайнем левом столбце.

  3. В левой области разверните AZURE: HDINSIGHT. В списке перечислены доступные подписки и кластеры.

  4. Разверните кластер, чтобы просмотреть базу метаданных Hive и схему таблиц.

  5. Щелкните правой кнопкой мыши таблицу Hive. Например: hivesampletable. Выберите Предварительный просмотр.

    Spark & Hive for Visual Studio Code preview hive table.

  6. Откроется окно предварительного просмотра результатов:

    Spark & Hive for Visual Studio Code preview results window.

  • Область результатов

    Вы можете сохранить все результаты в виде файла CSV, JSON или Excel по локальному пути или просто выбрать несколько строк.

  • Область сообщений

    1. Если количество строк в таблице превышает 100, отображается следующее сообщение: "The first 100 rows are displayed for Hive table" (Первые 100 строк отображаются для таблицы Hive).

    2. Если количество строк в таблице меньше или равно 100, отображается следующее сообщение: "60 rows are displayed for Hive table" (Для таблицы Hive отображается 60 строк).

    3. Если в таблице нет содержимого, появится следующее сообщение: "0 rows are displayed for Hive table.".

      Примечание.

      В Linux установите xclip, чтобы включить данные копирования таблицы.

      Spark & Hive for Visual Studio code in Linux.

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

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

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

    Spark & Hive Tools for Visual Studio Code IntelliSense objects.

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

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

    Spark & Hive Tools for Visual Studio Code syntax highlights.

Роль только для чтения

Пользователи, которым назначена для кластера роль только для чтения, не могут отправлять задания в кластер HDInsight и не просматривать базу данных Hive. Обратитесь к администратору кластера, чтобы изменить роль на оператора кластера HDInsight на портале Azure. Если у вас есть действительные учетные данные Ambari, можно связать кластер вручную, следуя приведенным ниже инструкциям.

Просмотр кластера HDInsight

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

Отправка задания в кластер HDInsight

При отправке задания в кластер HDInsight вам будет предложено связать кластер, если ваша роль для него — только для чтения. Чтобы подключиться к кластеру с помощью учетных данных Ambari, следуйте инструкциям ниже.

  1. Введите допустимое имя пользователя Ambari.

  2. Введите допустимый пароль.

    Spark & Hive Tools for Visual Studio Code Username.

    Spark & Hive Tools for Visual Studio Code Password.

    Примечание.

    Для проверки связанного кластера можно использовать Spark / Hive: List Cluster:

    Spark & Hive Tools for Visual Studio Code Reader Linked.

Azure Data Lake Storage 2-го поколения

Просмотр учетной записи Data Lake Storage 2-го поколения

Выберите обозреватель Azure HDInsight, чтобы развернуть учетную запись Data Lake Storage 2-го поколения. Вам будет предложено ввести ключ доступа к хранилищу, если учетная запись Azure не имеет доступа на запись к хранилищу 2-го поколения. После проверки ключа доступа учетная запись Data Lake Storage 2-го поколения разворачивается автоматически.

Отправка заданий в кластер HDInsight с помощью Data Lake Storage 2-го поколения

Отправьте задание в кластер HDInsight с помощью Data Lake Storage 2-го поколения. Вам будет предложено ввести ключ доступа к хранилищу, если учетная запись Azure не имеет прав на запись в хранилище 2-го поколения. После проверки ключа доступа задание будет успешно отправлено.

Spark & Hive Tools for Visual Studio Code AccessKey.

Примечание.

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

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

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

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

Выйти

В строке меню выберите Вид>Палитра команд и введите Azure: выход.

Известные проблемы

Ошибка установки Synapse PySpark.

Что касается ошибок установки Synapse Pyspark, так как ее зависимость больше не будет поддерживаться другой командой, эта возможность не будет поддерживаться. Если вы пытаетесь использовать интерактивную среду Synapse Pyspark, используйте Azure Synapse Analytics вместо нее. Это долгосрочное изменение.

synapse pyspark installation error.

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

Видео, на котором показано, как пользоваться Spark и Hive для Visual Studio Code, см. здесь.