Поделиться через


Руководство. Запуск кода из IntelliJ IDEA для классических вычислений

В этом руководстве показано, как приступить к работе с Databricks Connect для Scala с помощью IntelliJ IDEA и подключаемого модуля Scala.

В этом руководстве вы создадите проект в IntelliJ IDEA, установите Databricks Connect для Databricks Runtime 13.3 LTS и более поздних версий и выполните простой код для вычислений в рабочей области Databricks из IntelliJ IDEA.

Подсказка

Чтобы узнать, как использовать пакеты ресурсов Databricks для создания проекта Scala, который выполняет код на бессерверных вычислениях, см. статью "Создание JAR-файла Scala с помощью пакетов ресурсов Databricks".

Требования

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

  • Рабочая область, локальная среда и вычислительные ресурсы соответствуют требованиям Databricks Connect для Scala. См. сведения о требованиях к использованию Databricks Connect.

  • У вас должен быть доступный идентификатор кластера. Чтобы получить идентификатор кластера, в рабочей области щелкните "Вычислить " на боковой панели и выберите имя кластера. В адресной строке веб-браузера скопируйте строку символов между clusters и configuration в URL-адресе.

  • На компьютере разработки установлен пакет средств разработки Java (JDK). Сведения об установке версии см. в таблице поддержки версий.

    Замечание

    Если у вас нет JDK или на компьютере разработки установлено несколько JDK, можно установить или выбрать определенный JDK позже на шаге 1. Выбор установки JDK, которая находится ниже или выше версии JDK в кластере, может привести к непредвиденным результатам, или код может не выполняться вообще.

  • Установлен IntelliJ IDEA . Это руководство было протестировано с помощью IntelliJ IDEA Community Edition 2023.3.6. Если вы используете другую версию или выпуск IntelliJ IDEA, следующие инструкции могут отличаться.

  • У вас установлен плагин Scala для IntelliJ IDEA.

Шаг 1. Настройка проверки подлинности Azure Databricks

В этом руководстве используется аутентификация Azure Databricks с помощью OAuth-аутентификации пользователь-машина (U2M) и профиля конфигурации Azure Databricks для подключения к рабочей области Azure Databricks. Чтобы использовать другой тип проверки подлинности, см. раздел "Настройка свойств подключения".

Для настройки проверки подлинности OAuth U2M требуется интерфейс командной строки Databricks, как показано ниже.

  1. Установите интерфейс командной строки Databricks:

    Linux, macOS

    Используйте Homebrew для установки интерфейса командной строки Databricks, выполнив следующие две команды:

    brew tap databricks/tap
    brew install databricks
    

    Виндоус

    Вы можете использовать winget, Chocolatey или Подсистема Windows для Linux (WSL) для установки Databricks CLI. Если вы не можете использовать winget, Chocolatey или WSL, следует пропустить эту процедуру и использовать командную строку или PowerShell для установки командной утилиты Databricks из исходного кода.

    Замечание

    Установка интерфейса командной строки Databricks с помощью Chocolatey является экспериментальной.

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

    winget search databricks
    winget install Databricks.DatabricksCLI
    

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

    choco install databricks-cli
    

    Чтобы использовать WSL для установки интерфейса командной строки Databricks:

    1. Установите curl и zip через WSL. Дополнительные сведения см. в документации по операционной системе.

    2. Используйте WSL для установки интерфейса командной строки Databricks, выполнив следующую команду:

      curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
      
  2. Убедитесь, что интерфейс командной строки Databricks установлен, выполнив следующую команду, которая отображает текущую версию установленного интерфейса командной строки Databricks. Эта версия должна быть 0.205.0 или более поздней:

    databricks -v
    

Инициируйте проверку подлинности OAuth U2M следующим образом:

  1. Используйте Databricks CLI для начала управления токенами OAuth на локальном уровне, выполнив следующую команду для каждой целевой рабочей области.

    В следующей команде замените <workspace-url> на ваш URL-адрес Azure Databricks для рабочей области, например https://adb-1234567890123456.7.azuredatabricks.net.

    databricks auth login --configure-cluster --host <workspace-url>
    
  2. Интерфейс командной строки Databricks предлагает сохранить сведения, введенные в качестве профиля конфигурации Azure Databricks. Нажмите, Enter чтобы принять предлагаемое имя профиля, или введите имя нового или существующего профиля. Любой существующий профиль с тем же именем перезаписывается с введенными сведениями. Профили можно использовать для быстрого переключения контекста проверки подлинности в нескольких рабочих областях.

    Чтобы получить список существующих профилей в отдельном терминале или командной строке, используйте интерфейс командной строки Databricks для выполнения команды databricks auth profiles. Чтобы просмотреть существующие параметры конкретного профиля, выполните команду databricks auth env --profile <profile-name>.

  3. В веб-браузере выполните инструкции на экране, чтобы войти в рабочую область Azure Databricks.

  4. В списке доступных кластеров, которые отображаются в терминале или командной строке, используйте клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВНИЗ, чтобы выбрать целевой кластер Azure Databricks в рабочей области, а затем нажмите клавишу Enter. Вы также можете ввести любую часть отображаемого имени кластера, чтобы отфильтровать список доступных кластеров.

  5. Чтобы просмотреть текущее значение маркера OAuth профиля и метку времени окончания срока действия маркера, выполните одну из следующих команд:

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    Если у вас есть несколько профилей с одинаковым значением --host, может потребоваться указать параметры --host и -p вместе, чтобы помочь Databricks CLI найти правильную информацию о соответствующем токене OAuth.

Шаг 2. Создание проекта

  1. Запустите IntelliJ IDEA.

  2. В главном меню нажмите Файл > Создать > Проект.

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

  4. В поле "Расположение" щелкните значок папки и заполните инструкции на экране, чтобы указать путь к новому проекту Scala.

  5. Для языка нажмите кнопку Scala.

  6. Для создания системы щелкните sbt.

  7. В раскрывающемся списке JDK выберите существующую установку JDK на компьютере разработки, соответствующую версии JDK в кластере, или нажмите кнопку "Скачать JDK" и следуйте инструкциям на экране, чтобы скачать JDK, соответствующий версии JDK в кластере. См. раздел Требования.

    Замечание

    Выбор установки JDK выше или ниже версии JDK в кластере может привести к непредвиденным результатам, или код может не выполняться вообще.

  8. В раскрывающемся списке sbt выберите последнюю версию.

  9. В раскрывающемся списке Scala выберите версию Scala, которая соответствует версии Scala в кластере. См. раздел Требования.

    Замечание

    Выбор версии Scala, которая находится ниже или выше версии Scala в кластере, может привести к непредвиденным результатам, или код может не выполняться вообще.

  10. Убедитесь, что установлен флажок "Скачать источники" рядом с Scala.

  11. В качестве префикса пакета введите значение префикса пакета для источников проекта, например org.example.application.

  12. Убедитесь, что установлен флажок "Добавить пример кода ".

  13. Нажмите кнопку Создать.

Создание проекта IntelliJ IDEA

Шаг 3. Добавление пакета Databricks Connect

  1. При открытом новом проекте Scala в инструментальном окне Проект (Вид > Инструментальные окна > Проект), откройте файл с именем build.sbt, в project-name> target.

  2. Добавьте следующий код в конец build.sbt файла, который объявляет зависимость проекта от определенной версии библиотеки Databricks Connect для Scala, совместимой с версией среды выполнения Databricks в кластере:

    libraryDependencies += "com.databricks" %% "databricks-connect" % "17.3.+"
    

    Замените 17.3 версией библиотеки Databricks Connect, которая соответствует версии среды выполнения Databricks в кластере. Например, Databricks Connect 17.3.+ соответствует Databricks Runtime 17.3 LTS. Номера версий библиотеки Databricks Connect можно найти в центральном репозитории Maven.

    Замечание

    При создании с помощью Databricks Connect не включайте артефакты Apache Spark, такие как org.apache.spark:spark-core, в ваш проект. Вместо этого скомпилируйте непосредственно в Databricks Connect.

  3. Щелкните значок уведомления «Загрузить изменения sbt», чтобы обновить ваш проект Scala с новым расположением библиотеки и зависимостями.

    Установка пакета Databricks Connect

  4. Дождитесь, пока sbt индикатор хода выполнения не исчезнет в нижней части интегрированной среды разработки. Процесс sbt загрузки может занять несколько минут.

Шаг 4. Добавление кода

  1. В окне инструмента Project откройте файл с именем Main.scala, в project-name> src > main > scala.

  2. Замените существующий код в файле следующим кодом, а затем сохраните файл в зависимости от имени профиля конфигурации.

    Если профиль конфигурации из шага 1 называется DEFAULT, замените существующий код в файле следующим кодом, а затем сохраните файл:

    package org.example.application
    
    import com.databricks.connect.DatabricksSession
    import org.apache.spark.sql.SparkSession
    
    object Main {
      def main(args: Array[String]): Unit = {
        val spark = DatabricksSession.builder().remote().getOrCreate()
        val df = spark.read.table("samples.nyctaxi.trips")
        df.limit(5).show()
      }
    }
    

    Если профиль конфигурации из шага 1 не называется DEFAULT, замените существующий код в файле следующим кодом. Замените заполнитель <profile-name> именем профиля конфигурации на шаге 1, а затем сохраните файл:

    package org.example.application
    
    import com.databricks.connect.DatabricksSession
    import com.databricks.sdk.core.DatabricksConfig
    import org.apache.spark.sql.SparkSession
    
    object Main {
      def main(args: Array[String]): Unit = {
        val config = new DatabricksConfig().setProfile("<profile-name>")
        val spark = DatabricksSession.builder().sdkConfig(config).getOrCreate()
        val df = spark.read.table("samples.nyctaxi.trips")
        df.limit(5).show()
      }
    }
    

Шаг 5. Настройка параметров виртуальной машины

  1. Импортируйте текущий каталог в IntelliJ, где build.sbt находится.

  2. Выберите Java 17 в IntelliJ. Перейдите в Файл>Структура проекта>SDK.

  3. Откройте src/main/scala/com/examples/Main.scala.

  4. Перейдите к конфигурации main, чтобы добавить параметры виртуальной машины:

    Редактировать основное

    Добавление параметров виртуальной машины

  5. Добавьте следующие параметры виртуальной машины:

    --add-opens=java.base/java.nio=ALL-UNNAMED
    

Подсказка

Кроме того, или если вы используете Visual Studio Code, добавьте следующее в файл сборки sbt:

fork := true
javaOptions += "--add-opens=java.base/java.nio=ALL-UNNAMED"

Затем запустите приложение из терминала:

sbt run

Шаг 6. Запуск кода

  1. Запустите целевой кластер в удаленной рабочей области Azure Databricks.
  2. После запуска кластера в главном меню нажмите кнопку "Запустить > main".
  3. В окне Run (Вид > Окна инструментов > Run), на вкладке Main отображаются первые 5 строк таблицы samples.nyctaxi.trips.

Шаг 7. Отладка кода

  1. Если целевой кластер по-прежнему запущен, в указанном коде щелкните в поле рядом с df.limit(5).show(), чтобы установить точку останова.

  2. В главном меню нажмите "Запустить > отладку 'Main'". В окне инструмента , на вкладке >, щелкните значок калькулятора (>).

  3. Введите выражение df.schema.

  4. Нажмите Оценить, чтобы отобразить схему DataFrame.

  5. На боковой панели окна средства отладки щелкните значок зеленой стрелки (возобновить программу). Первые 5 строк samples.nyctaxi.trips таблицы отображаются на панели консоли .

    Отладка проекта IntelliJ IDEA