Tutorial: consultar HDFS en un clúster de macrodatos de SQL Server
Se aplica a: SQL Server 2019 (15.x)
Importante
El complemento Clústeres de macrodatos de Microsoft SQL Server 2019 se va a retirar. La compatibilidad con Clústeres de macrodatos de SQL Server 2019 finalizará el 28 de febrero de 2025. Todos los usuarios existentes de SQL Server 2019 con Software Assurance serán totalmente compatibles con la plataforma, y el software se seguirá conservando a través de actualizaciones acumulativas de SQL Server hasta ese momento. Para más información, consulte la entrada de blog sobre el anuncio y Opciones de macrodatos en la plataforma Microsoft SQL Server.
En este tutorial, se muestra cómo consultar datos de HDFS desde un Clústeres de macrodatos de SQL Server 2019.
En este tutorial, aprenderá a:
- Crear una tabla externa que apunte a datos de HDFS en un clúster de macrodatos.
- Combinar estos datos con datos de alto valor en la instancia maestra.
Sugerencia
Si lo prefiere, puede descargar y ejecutar un script con los comandos de este tutorial. Para obtener instrucciones, vea los ejemplos de virtualización de datos en GitHub.
Este vídeo de 7 minutos le guía a través de la consulta de datos de HDFS en un clúster de macrodatos:
Requisitos previos
- Herramientas de macrodatos
- kubectl
- Azure Data Studio
- Extensión de SQL Server 2019
- Cargar datos de ejemplo en un clúster de macrodatos
Crea una tabla externa a HDFS
El grupo de almacenamiento contiene datos de secuencias de clics web en un archivo CSV almacenado en HDFS. Siga este procedimiento para definir una tabla externa que pueda acceder a los datos de ese archivo.
En Azure Data Studio, conéctese a la instancia maestra de SQL Server del clúster de macrodatos. Para obtener más información, vea Conectarse a una instancia maestra de SQL Server.
Haga doble clic en la conexión de la ventana Servidores para mostrar el panel del servidor de la instancia maestra de SQL Server. Seleccione Nueva consulta.
Ejecute el siguiente comando de Transact-SQL para cambiar el contexto de la base de datos Ventas de la instancia maestra.
USE Sales GO
Defina el formato del archivo CSV que se leerá desde HDFS. Presione F5 para ejecutar la instrucción.
CREATE EXTERNAL FILE FORMAT csv_file WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS( FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2, USE_TYPE_DEFAULT = TRUE) );
Cree un origen de datos externo al grupo de almacenamiento (si aún no existe).
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
Cree una tabla externa que pueda leer
/clickstream_data
desde el grupo de almacenamiento. SqlStoragePool es accesible desde la instancia maestra de un clúster de macrodatos.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
Consultar los datos
Ejecute la consulta siguiente para unir los datos de HDFS en la tabla externa web_clickstream_hdfs
con los datos relacionales en la base de datos de Sales
local.
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
Limpieza
Use el comando siguiente para quitar la tabla externa usada en este tutorial.
DROP EXTERNAL TABLE [dbo].[web_clickstreams_hdfs];
GO
Pasos siguientes
Vea el artículo siguiente para obtener información sobre cómo consultar datos de Oracle desde un clúster de macrodatos.