Руководство по запросу HDFS в кластере больших данных SQL Server
Область применения: SQL Server 2019 (15.x)
Внимание
Поддержка надстройки "Кластеры больших данных" Microsoft SQL Server 2019 будет прекращена. Мы прекратим поддержку Кластеров больших данных SQL Server 2019 28 февраля 2025 г. Все существующие пользователи SQL Server 2019 с Software Assurance будут полностью поддерживаться на платформе, и программное обеспечение будет продолжать поддерживаться с помощью накопительных обновлений SQL Server до этого времени. Дополнительные сведения см. в записи блога объявлений и в статье о параметрах больших данных на платформе Microsoft SQL Server.
В этом руководстве показано, как запрашивать данные HDFS в Кластеры больших данных SQL Server 2019.
В этом руководстве описано следующее:
- Создание внешней таблицы, указывающей на данные HDFS в кластере больших данных.
- Объединение этих данных с важными данными в главном экземпляре.
Совет
При необходимости вы можете скачать и выполнить скрипт, содержащий команды из этого руководства. См. инструкции в разделе Примеры виртуализации данных на сайте GitHub.
Это 7-минутное видео посвящено обращению к данным HDFS в кластере больших данных:
Необходимые компоненты
- Средства работы с большими данными
- kubectl
- Azure Data Studio
- Расширение SQL Server 2019
- Загрузка примера данных в кластер больших данных
Создание внешней таблицы в HDFS
В пуле носителей располагается CSV-файл с данными о посещениях веб-страниц, хранящийся в HDFS. Выполните следующие действия, чтобы определить внешнюю таблицу, которая сможет получать доступ к данным в этом файле.
В Azure Data Studio установите подключение к главному экземпляру SQL Server в кластере больших данных. Дополнительные сведения см. в разделе Подключение к главному экземпляру SQL Server.
Дважды щелкните подключение в окне Серверы, чтобы открыть панель мониторинга сервера для главного экземпляра SQL Server. Выберите Создать запрос.
Выполните следующую команду Transact-SQL, чтобы изменить контекст на базу данных Sales в главном экземпляре.
USE Sales GO
Определите формат CSV-файла для чтения из HDFS. Нажмите клавишу F5, чтобы выполнить инструкцию.
CREATE EXTERNAL FILE FORMAT csv_file WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS( FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2, USE_TYPE_DEFAULT = TRUE) );
Создайте внешний источник данных для пула носителей, если это не было сделано ранее.
IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlStoragePool') BEGIN CREATE EXTERNAL DATA SOURCE SqlStoragePool WITH (LOCATION = 'sqlhdfs://controller-svc/default'); END
Создайте внешнюю таблицу, которая может считывать
/clickstream_data
из пула носителей. К SqlStoragePool может осуществляться доступ из главного экземпляра кластера больших данных.CREATE EXTERNAL TABLE [web_clickstreams_hdfs] ("wcs_click_date_sk" BIGINT , "wcs_click_time_sk" BIGINT , "wcs_sales_sk" BIGINT , "wcs_item_sk" BIGINT , "wcs_web_page_sk" BIGINT , "wcs_user_sk" BIGINT) WITH ( DATA_SOURCE = SqlStoragePool, LOCATION = '/clickstream_data', FILE_FORMAT = csv_file ); GO
Запрос данных
Выполните следующий запрос, чтобы объединить данные HDFS во внешней таблице web_clickstream_hdfs
с реляционными данными в локальной базе данных Sales
.
SELECT
wcs_user_sk,
SUM( CASE WHEN i_category = 'Books' THEN 1 ELSE 0 END) AS book_category_clicks,
SUM( CASE WHEN i_category_id = 1 THEN 1 ELSE 0 END) AS [Home & Kitchen],
SUM( CASE WHEN i_category_id = 2 THEN 1 ELSE 0 END) AS [Music],
SUM( CASE WHEN i_category_id = 3 THEN 1 ELSE 0 END) AS [Books],
SUM( CASE WHEN i_category_id = 4 THEN 1 ELSE 0 END) AS [Clothing & Accessories],
SUM( CASE WHEN i_category_id = 5 THEN 1 ELSE 0 END) AS [Electronics],
SUM( CASE WHEN i_category_id = 6 THEN 1 ELSE 0 END) AS [Tools & Home Improvement],
SUM( CASE WHEN i_category_id = 7 THEN 1 ELSE 0 END) AS [Toys & Games],
SUM( CASE WHEN i_category_id = 8 THEN 1 ELSE 0 END) AS [Movies & TV],
SUM( CASE WHEN i_category_id = 9 THEN 1 ELSE 0 END) AS [Sports & Outdoors]
FROM [dbo].[web_clickstreams_hdfs]
INNER JOIN item it ON (wcs_item_sk = i_item_sk
AND wcs_user_sk IS NOT NULL)
GROUP BY wcs_user_sk;
GO
Очистка
Выполните следующую команду, чтобы удалить внешнюю таблицу, используемую в этом руководстве.
DROP EXTERNAL TABLE [dbo].[web_clickstreams_hdfs];
GO
Следующие шаги
В следующей статье вы сможете ознакомиться с выполнением запросов к Oracle из кластера больших данных.