Tutorial: Consultar o HDFS em um cluster de Big Data do SQL Server

Aplica-se a: SQL Server 2019 (15.x)

Importante

O complemento Clusters de Big Data do Microsoft SQL Server 2019 será desativado. O suporte para Clusters de Big Data do SQL Server 2019 será encerrado em 28 de fevereiro de 2025. Todos os usuários existentes do SQL Server 2019 com Software Assurance terão suporte total na plataforma e o software continuará a ser mantido por meio de atualizações cumulativas do SQL Server até esse momento. Para obter mais informações, confira a postagem no blog de anúncio e as opções de Big Data na plataforma do Microsoft SQL Server.

Este tutorial demonstra como consultar dados do HDFS em um Clusters de Big Data do SQL Server 2019.

Neste tutorial, você aprenderá como:

  • Criar uma tabela externa apontando para os dados do HDFS em um cluster de Big Data.
  • Unir esses dados com os dados de alto valor na instância mestre.

Dica

Se preferir, você poderá baixar e executar um script para os comandos neste tutorial. Para obter instruções, confira os Exemplos de virtualização de dados no GitHub.

Este vídeo de 7 minutos orienta você pela consulta de dados do HDFS em um cluster de Big Data:

Pré-requisitos

Criar uma tabela externa no HDFS

O pool de armazenamento contém dados de cliques da Web em um arquivo CSV armazenado no HDFS. Use as etapas a seguir para definir uma tabela externa que pode acessar os dados nesse arquivo.

  1. No Azure Data Studio, conecte-se à instância mestre do SQL Server do cluster de Big Data. Para obter mais informações, confira Conectar-se à instância mestre do SQL Server.

  2. Clique duas vezes na conexão na janela Servidores para mostrar o painel do servidor da instância mestre do SQL Server. Selecione Nova Consulta.

    Consulta da instância mestre do SQL Server

  3. Execute o seguinte comando Transact-SQL para alterar o contexto para o banco de dados Vendas na instância mestre.

    USE Sales
    GO
    
  4. Defina o formato do arquivo CSV a ser lido no HDFS. Pressione F5 para executar a instrução.

    CREATE EXTERNAL FILE FORMAT csv_file
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS(
            FIELD_TERMINATOR = ',',
            STRING_DELIMITER = '"',
            FIRST_ROW = 2,
            USE_TYPE_DEFAULT = TRUE)
    );
    
  5. Crie uma fonte de dados externos para o pool de armazenamento se ela ainda não existir.

    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. Crie uma tabela externa que possa ler o /clickstream_data do pool de armazenamento. O SqlStoragePool pode ser acessado da instância mestre de um cluster de 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
    

Consultar os dados

Execute a consulta a seguir para unir os dados do HDFS na tabela externa web_clickstream_hdfs com os dados relacionais no banco de dados 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

Limpar

Use o comando a seguir para remover a tabela externa usada neste tutorial.

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

Próximas etapas

Avance para o próximo artigo para saber como consultar o Oracle de um cluster de Big Data.