次の方法で共有


チュートリアル:SQL Server ビッグ データ クラスター内の HDFS にクエリを実行する

適用対象: SQL Server 2019 (15.x)

Important

Microsoft SQL Server 2019 ビッグ データ クラスターは廃止されました。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日の時点で終了しました。 詳細については、Microsoft SQL Server プラットフォーム の発表ブログ投稿ビッグ データ オプションを参照してください。

このチュートリアルでは、SQL Server 2019 ビッグ データ クラスターの HDFS データにクエリを実行する方法について説明します。

このチュートリアルでは、以下の内容を学習します。

  • ビッグ データ クラスター内の HDFS データを指す外部テーブルを作成する。
  • このデータを、マスター インスタンスの価値の高いデータと結合する。

Tip

必要に応じて、このチュートリアルのコマンド用のスクリプトをダウンロードして実行できます。 手順については、GitHub のデータ仮想化のサンプルを参照してください。

この 7 分間のビデオでは、ビッグ データ クラスターの HDFS データにクエリを実行する手順について説明します。

Prerequisites

HDFS に対する外部テーブルを作成する

記憶域プールには、HDFS に格納されている CSV ファイル内の Web クリックストリーム データが含まれます。 次の手順を使用して、そのファイル内のデータにアクセスできる外部テーブルを定義します。

  1. Azure Data Studio で、ビッグ データ クラスターの SQL Server マスター インスタンスに接続します。 詳細については、「SQL Server マスター インスタンスに接続する」を参照してください。

  2. [サーバー] ウィンドウで接続をダブルクリックして、SQL Server マスター インスタンスのサーバー ダッシュボードを表示します。 [New Query] を選択します。

    SQL Server マスター インスタンス クエリ

  3. 次の Transact-SQL コマンドを実行し、マスター インスタンスの Sales データベースにコンテキストを変更します。

    USE Sales
    GO
    
  4. HDFS から読み取る CSV ファイルの形式を定義します。 F5 キーを押して、ステートメントを実行します。

    CREATE EXTERNAL FILE FORMAT csv_file
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS(
            FIELD_TERMINATOR = ',',
            STRING_DELIMITER = '"',
            FIRST_ROW = 2,
            USE_TYPE_DEFAULT = TRUE)
    );
    
  5. まだ存在しない場合は、記憶域プールに対する外部データ ソースを作成します。

    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. 記憶域プールから /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
    

データにクエリを実行する

次のクエリを実行し、web_clickstream_hdfs 外部テーブルの 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

Clean up

このチュートリアルで使用される外部テーブルを削除するには、次のコマンドを使用します。

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

Next steps

次の記事に進み、ビッグ データ クラスターから Oracle にクエリを実行する方法を学習します。