Esercitazione: eseguire query su dati HDFS in un cluster Big Data di SQL Server

Si applica a: SQL Server 2019 (15.x)

Importante

Il componente aggiuntivo per i cluster Big Data di Microsoft SQL Server 2019 verrà ritirato. Il supporto per i cluster Big Data di SQL Server 2019 terminerà il 28 febbraio 2025. Tutti gli utenti esistenti di SQL Server 2019 con Software Assurance saranno completamente supportati nella piattaforma e fino a quel momento il software continuerà a ricevere aggiornamenti cumulativi di SQL Server. Per altre informazioni, vedere il post di blog relativo all'annuncio e Opzioni per i Big Data nella piattaforma Microsoft SQL Server.

Questa esercitazione illustra come eseguire query su dati HDFS in cluster Big Data di SQL Server 2019.

In questa esercitazione apprenderai a:

  • Creare una tabella esterna che punta ai dati HDFS in un cluster Big Data.
  • Unire questi dati con dati di valore elevato nell'istanza master.

Suggerimento

Se si preferisce, è possibile scaricare ed eseguire uno script per i comandi descritti in questa esercitazione. Per istruzioni, vedere Esempi di virtualizzazione di dati in GitHub.

Questo video di 7 minuti illustra come eseguire query su dati HDFS in un cluster Big Data:

Prerequisiti

Creare una tabella esterna basata su dati HDFS

Il pool di archiviazione contiene dati clickstream Web in un file CSV archiviato in HDFS. Usare questa procedura per definire una tabella esterna in grado di accedere ai dati presenti nel file.

  1. In Azure Data Studio connettersi all'istanza master di SQL Server del cluster Big Data. Per altre informazioni, vedere Connettersi all'istanza master di SQL Server.

  2. Fare doppio clic sulla connessione nella finestra Server per visualizzare il dashboard del server per l'istanza master di SQL Server. Selezionare Nuova query.

    SQL Server master instance query

  3. Eseguire il comando Transact-SQL seguente per modificare il contesto nel database Sales dell'istanza master.

    USE Sales
    GO
    
  4. Definire il formato del file CSV da leggere dal sistema HDFS. Premere F5 per eseguire l'istruzione.

    CREATE EXTERNAL FILE FORMAT csv_file
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS(
            FIELD_TERMINATOR = ',',
            STRING_DELIMITER = '"',
            FIRST_ROW = 2,
            USE_TYPE_DEFAULT = TRUE)
    );
    
  5. Creare un'origine dati esterna nel pool di archiviazione, se non esiste già.

    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
    
  6. Creare una tabella esterna in grado di leggere /clickstream_data dal pool di archiviazione. SqlStoragePool è accessibile dall'istanza master di un cluster Big Data.

    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
    

Eseguire una query sui dati

Eseguire la query seguente per creare un join tra i dati della tabella esterna web_clickstream_hdfs e i dati relazionali nel database Sales locale.

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

Eseguire la pulizia

Usare il comando seguente per rimuovere la tabella esterna usata in questa esercitazione.

DROP EXTERNAL TABLE [dbo].[web_clickstreams_hdfs];
GO

Passaggi successivi

Passare all'articolo successivo per informazioni su come eseguire una query su dati Oracle da un cluster Big Data.