Руководство. Загрузка данных и выполнение запросов в кластере Apache Spark в Azure HDInsight

В этом руководстве описывается, как создать кадр данных из CSV-файла и как отправлять интерактивные запросы SQL Spark к кластеру Apache Spark в Azure HDInsight. В Spark кадр данных — это распределенная коллекция данных, упорядоченных в именованных столбцах. Она эквивалентна таблице в реляционной базе данных или фрейме данных в R/Python.

В этом руководстве описано следующее:

  • Создание кадра данных из CSV-файла
  • Выполнение запросов к кадру данных

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

Кластер Apache Spark в HDInsight. Ознакомьтесь со статьей Краткое руководство. Создание кластера Apache Spark в HDInsight с помощью шаблона.

Создание записной книжки Jupyter

Jupyter Notebook — это интерактивная среда записных книжек, которая поддерживает различные языки программирования. Notebook позволяет работать с данными, объединять код с текстом Markdown и выполнять простые визуализации.

  1. Измените URL-адрес https://SPARKCLUSTER.azurehdinsight.net/jupyter, заменив SPARKCLUSTER именем кластера Spark. В веб-браузере введите измененный URL-адрес. При появлении запроса введите учетные данные для входа в кластер.

  2. На веб-странице Jupyter для кластеров Spark 2.4, выберите New (Создать)>PySpark, чтобы создать записную книжку. Для выпуска Spark 3.1 вместо этого выберите New (Создать)>PySpark3, чтобы создать записную книжку, поскольку ядро PySpark больше не доступно в Spark 3.1.

    Create a Jupyter Notebook to run interactive Spark SQL query.

    Будет создана и открыта записная книжка с именем Untitled(Untitled.ipynb).

    Примечание.

    Если записная книжка создается с использованием PySpark или ядра PySpark3, сеанс spark автоматически создается при выполнении первой ячейки кода. Вам не нужно явно создавать этот сеанс.

Создание кадра данных из CSV-файла

Приложения могут создавать кадры данных непосредственно из файлов или папок в удаленном хранилище, например служба хранилища Azure или Azure Data Lake служба хранилища; из таблицы Hive; или из других источников данных, поддерживаемых Spark, таких как Azure Cosmos DB, База данных SQL Azure, хранилище данных и т. д. На снимке экрана показан моментальный снимок файла hvac.csv, используемого в этом руководстве. CSV-файл содержит все кластеры HDInsight Spark. Эти данные демонстрируют колебания температуры в некоторых зданиях.

Snapshot of data for interactive Spark SQL query.

  1. Вставьте следующий код в пустую ячейку записной книжки Jupyter Notebook и нажмите SHIFT+ВВОД для выполнения кода. Код импортирует типы, необходимые для этого сценария:

    from pyspark.sql import *
    from pyspark.sql.types import *
    

    При запуске интерактивного запроса в Jupyter в заголовке окна веб-браузера или вкладки будет отображаться состояние (Busy) (Занято), а также название записной книжки. Кроме того, рядом с надписью PySpark в верхнем правом углу окна будет показан закрашенный кружок. После завершения задания он изменится на кружок без заливки.

    Status of interactive Spark SQL query.

  2. Запишите возвращенный идентификатор сеанса. На рисунке выше идентификатор сеанса равен 0. При необходимости можно получить сведения о сеансе, перейдя по ссылке https://CLUSTERNAME.azurehdinsight.net/livy/sessions/ID/statements, где CLUSTERNAME — это имя кластера Spark, а ID — идентификатор сеанса.

  3. Выполните следующий код, чтобы создать кадр данных и временную таблицу hvac.

    # Create a dataframe and table from sample data
    csvFile = spark.read.csv('/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv', header=True, inferSchema=True)
    csvFile.write.saveAsTable("hvac")
    

Выполнение запросов к кадру данных

Когда таблица будет готова, выполните интерактивный запрос к данным.

  1. В пустой ячейке приложения выполните следующий код:

    %%sql
    SELECT buildingID, (targettemp - actualtemp) AS temp_diff, date FROM hvac WHERE date = \"6/1/13\"
    

    Отобразятся следующие табличные данные.

    Table output of interactive Spark query result.

  2. Результаты также можно просмотреть и в других визуализациях. Чтобы увидеть результат в виде диаграммы с областями, выберите Область и укажите другие значения, как показано ниже.

    Area graph of interactive Spark query result.

  3. В строке меню записной книжки выберите File (Файл) >Save and Checkpoint (Сохранить и создать контрольную точку).

  4. Если вы собираетесь ознакомиться со следующим руководством сейчас, не закрывайте записную книжку. В противном случае завершите работу записной книжки, чтобы освободить ресурсы кластера. В строке меню записной книжки выберите File (Файл) >Close and Halt (Закрыть и остановить).

Очистка ресурсов

С HDInsight ваши данные и записные книжки Jupyter Notebook сохраняются в Службе хранилища Azure или Azure Data Lake Storage, что позволяет безопасно удалить неиспользуемый кластер. Плата за кластеры HDInsight взимается, даже когда они не используются. Так как затраты на кластер во много раз превышают затраты на хранилище, экономически целесообразно удалять неиспользуемые кластеры. Если вы планируете сразу приступить к следующему руководству, можно оставить кластер.

Откройте кластер на портале Azure и выберите Удалить.

Delete HDInsight cluster.

Кроме того, можно выбрать имя группы ресурсов, чтобы открыть страницу группы ресурсов, а затем щелкнуть Удалить группу ресурсов. Вместе с группой ресурсов вы также удалите кластер Spark в HDInsight и учетную запись хранения по умолчанию.

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

В этом учебнике описывается, как создать кадр данных из CSV-файла и как отправлять интерактивные запросы SQL Spark к кластеру Apache Spark в Azure HDInsight. Теперь переходите к следующей статье, в которой объясняется, как перенести зарегистрированные в Apache Spark данные в средство бизнес-аналитики, например в Power BI.