Condividi tramite


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

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

Importante

Il componente aggiuntivo 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 il software continuerà a essere mantenuto tramite gli aggiornamenti cumulativi di SQL Server fino a quel momento. Per ulteriori informazioni, vedere il post di blog sull'annuncio e le opzioni di Big Data sulla piattaforma Microsoft SQL Server.

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

In questa esercitazione si apprenderà come:

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

Suggerimento

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

Questo video di 7 minuti illustra l'esecuzione di query sui dati HDFS in un cluster Big Data:

Prerequisiti

Creare una tabella esterna su HDFS

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

  1. In Azure Data Studio, collegarsi all'istanza master di SQL Server del cluster di 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.

    Query dell'istanza master di SQL Server

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

    USE Sales
    GO
    
  4. Definire il formato del file CSV da leggere da HDFS. Premere F5 per eseguire il comando.

    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 per il 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 che legga /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 unire i dati HDFS nella web_clickstream_hdfs tabella esterna con i dati relazionali nel database locale 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

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 query su Oracle da un cluster Big Data.