05.SQL Server大數據羣集小試牛刀--HDFS查詢
SQL Server大數據羣集查詢HDFS ,利用之前創建好的大數據羣集,使用官方提供的測試數據進行測試。腳本是官方的腳本,要知道幹了什麼,就需要分析腳本了。大概幹幾件事情
1、下載測試數據bak
2、還原數據庫
3、導入出數據寫入到HDFS
要完成這些任務,必須有幾個工具才能完成,所以前提條件是要安裝之前提過的幾個大數據工具,這裏至少需要SQLCMD、kubectl、BCP
首先必須按照SQLCMD命令行
1、下載 ODBC驅動:並安裝
https://www.microsoft.com/zh-CN/download/details.aspx?id=36433
2、 下載Microsoft® Command Line Utilities 11 for SQL Server® 並安裝
https://www.microsoft.com/zh-CN/download/details.aspx?id=36434
安裝完成後,添加path路徑C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn,重啓計算機(默認看的人懂怎麼添加path)
3、下載數據腳本
在CMD 窗口下載 cmd腳本 curl -o bootstrap-sample-db.cmd "https://raw.githubusercontent.com/Microsoft/sql-server-samples/master/samples/features/sql-big-data-cluster/bootstrap-sample-db.cmd" 下載sql腳本 curl -o bootstrap-sample-db.sql "https://raw.githubusercontent.com/Microsoft/sql-server-samples/master/samples/features/sql-big-data-cluster/bootstrap-sample-db.sql"
4、需要下列參數。
可以使用下面命令獲取參數
獲取SQL_MASTER_IP 參數 kubectl get svc endpoint-master-pool -n sqlbigdata2 獲取<KNOX_IP> kubectl get svc endpoint-security -n sqlbigdata2
名稱 ,密碼都是在之前配置的環境參數中配置
參數 | Description |
---|---|
<CLUSTER_NAMESPACE> | 提供你的大數據羣集的名稱。 |
<SQL_MASTER_IP> | 主實例的 IP 地址。 |
<SQL_MASTER_SA_PASSWORD> | 主實例 SA 密碼。 |
<KNOX_IP> | HDFS/Spark 網關的 IP 地址。 |
<KNOX_PASSWORD> | HDFS/Spark 網關的密碼。 |
5、獲取相應的參數後,打開CMD窗口,導航到存放 bootstrap-sample-db.cmd的路徑下。執行如下命名
bootstrap-sample-db.cmd <CLUSTER_NAMESPACE> <SQL_MASTER_IP> <SQL_MASTER_SA_PASSWORD> <KNOX_IP> <KNOX_PASSWORD>
這裏提示competed successfully成功。如果不成功,會提示輸出日誌路徑。查看錯誤原因。
連接大數據羣集可以看到HDFS 下面有兩個文件: web_clickstreams.csv, product_reviews.csv
使用Azure Data Studio 連接主數據,運行下面查詢:
use sales /* 創建格式*/ CREATE EXTERNAL FILE FORMAT csv_file WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS( FIELD_TERMINATOR = ',', STRING_DELIMITER = '"', FIRST_ROW = 2, USE_TYPE_DEFAULT = TRUE) ); go /*創建外接表*/ 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 /*查詢*/ 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
從下圖看到,創建了一個外接表叫web_clickstreams_hdfs
執行了這個比較複雜的查詢結果有88695行,耗時2分鐘。這個速度感覺還可以的。(環境是用的Azure L4s的機型,4vcpu,32g內存)。
除了可以直接連接HDFS 外,還可以連接SQL Server 、Oracle。也可以使用Spark建立任務作業加載數據,還可以使用Spark notebook來 連接數據庫進行使用。實現了數據虛擬化。而羣集實現了計算和存儲的分離。
上面從創建到使用,其實你是不是也沒感覺出大數據羣集的強大之處?
下一篇深入來了解下大數據羣集,到底有啥神祕和不同之處。
作者簡介: Max Shen(阿特),爲了成爲數據專家而努力,萬一實現了呢!有多年的系統運維,數據庫運維經驗。近20年的IT從業經驗,在微軟有超過10年的工作經驗。對數據庫運維調優,排錯,有獨到能力。電話微信18628037379,[email protected]