05.SQL Server大數據羣集小試牛刀--HDFS查詢

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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章