チュートリアル:SQL Server ビッグ データ クラスター内の HDFS にクエリを実行する
適用対象: SQL Server 2019 (15.x)
重要
Microsoft SQL Server 2019 ビッグ データ クラスターのアドオンは廃止されます。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日に終了します。 ソフトウェア アシュアランス付きの SQL Server 2019 を使用する既存の全ユーザーはプラットフォームで完全にサポートされ、ソフトウェアはその時点まで SQL Server の累積更新プログラムによって引き続きメンテナンスされます。 詳細については、お知らせのブログ記事と「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。
このチュートリアルでは、SQL Server 2019 ビッグ データ クラスターの HDFS データにクエリを実行する方法について説明します。
このチュートリアルでは、以下の内容を学習します。
- ビッグ データ クラスター内の HDFS データを指す外部テーブルを作成する。
- このデータを、マスター インスタンスの価値の高いデータと結合する。
ヒント
必要に応じて、このチュートリアルのコマンド用のスクリプトをダウンロードして実行できます。 手順については、GitHub のデータ仮想化のサンプルを参照してください。
この 7 分間のビデオでは、ビッグ データ クラスターの HDFS データにクエリを実行する手順について説明します。
前提条件
- ビッグ データ ツール
- kubectl
- Azure Data Studio
- SQL Server 2019 の拡張機能
- ビッグ データ クラスターにサンプル データを読み込む
HDFS に対する外部テーブルを作成する
記憶域プールには、HDFS に格納されている CSV ファイル内の Web クリックストリーム データが含まれます。 次の手順を使用して、そのファイル内のデータにアクセスできる外部テーブルを定義します。
Azure Data Studio で、ビッグ データ クラスターの SQL Server マスター インスタンスに接続します。 詳細については、「SQL Server マスター インスタンスに接続する」を参照してください。
[サーバー] ウィンドウで接続をダブルクリックして、SQL Server マスター インスタンスのサーバー ダッシュボードを表示します。 [新しいクエリ] を選択します。
次の Transact-SQL コマンドを実行し、マスター インスタンスの Sales データベースにコンテキストを変更します。
USE Sales GO
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) );
まだ存在しない場合は、記憶域プールに対する外部データ ソースを作成します。
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
記憶域プールから
/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
クリーンアップ
このチュートリアルで使用される外部テーブルを削除するには、次のコマンドを使用します。
DROP EXTERNAL TABLE [dbo].[web_clickstreams_hdfs];
GO
次のステップ
次の記事に進み、ビッグ データ クラスターから Oracle にクエリを実行する方法を学習します。