教學課程:查詢 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。