ELT太慢怎么行,試試PolyBase?

傳統(tǒng)的數(shù)倉(cāng)項(xiàng)目,我們會(huì)用ETL把數(shù)據(jù)Extract Transform然后再Load到目標(biāo)數(shù)據(jù)平臺(tái)。

現(xiàn)在到了云和大數(shù)據(jù)時(shí)代,各種不同的數(shù)據(jù)分析需求太多,也沒(méi)有任何單一的數(shù)據(jù)平臺(tái)能夠滿足所有的要求,因此我們會(huì)有各式各樣的數(shù)據(jù)平臺(tái)來(lái)應(yīng)對(duì)不同的需求。這個(gè)時(shí)候我們通常會(huì)傾向于采用ELT(Extract Load and Transform),顧名思義,先把未處理的數(shù)據(jù)放在一個(gè)集中的數(shù)據(jù)湖(Data Lake或者對(duì)象存儲(chǔ)Blob Storage)里面,需要處理的時(shí)候再去數(shù)據(jù)湖取數(shù)處理分析。

那么這個(gè)時(shí)候數(shù)據(jù)的加載速度,就顯得尤為重要。

對(duì)于MS SQL系的產(chǎn)品,我們有PolyBase,并行的加載能夠大大提升數(shù)據(jù)的加載速度。
比如我們這里有一個(gè)100G的CSV格式源文件存在Azure Blob Storage里,需要把它導(dǎo)入到SQL DW里面,使用起來(lái)也非常簡(jiǎn)單。只需要把Blob Storage里的源文件當(dāng)成外表創(chuàng)建在SQL DW然后再通過(guò)CTAS導(dǎo)入進(jìn)數(shù)據(jù)倉(cāng)庫(kù)。

接下來(lái)我們一步一步來(lái)看怎么這個(gè)過(guò)程如何實(shí)現(xiàn)。

  1. 定義好Blob Storage的Credential,在下面的SQL里的Secret里面填上Storage的Key
/*
CREATE IDENTITY
*/
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
    IDENTITY = 'user',
    SECRET = '<填上您的Blob Storage的密鑰>'
;
  1. 定義Data Source,把Blob的URL填到下面SQL的Location。
/*
Create External Data Source
*/
CREATE EXTERNAL DATA SOURCE AzureStorage_DataSource
WITH 
(  
    TYPE = Hadoop 
,   LOCATION = 'wasbs://<Container>@<AccountName>.blob.core.chinacloudapi.cn'
,   CREDENTIAL = AzureStorageCredential
); 
GO
  1. 定義文件格式,我們這里使用的是CSV文件,字段用逗號(hào)隔開(kāi)
/*
Create External File FORMAT
*/
CREATE EXTERNAL FILE FORMAT csvdelimitedfile
WITH (FORMAT_TYPE = DELIMITEDTEXT,
      FORMAT_OPTIONS (FIELD_TERMINATOR = ','));
GO
  1. 創(chuàng)建外表
/* 
Create External Table 
*/
DROP External TABLE [dbo].[DEAL_DETAILS_EXT];
CREATE External TABLE [dbo].[DEAL_DETAILS_EXT](
    [REGION] [nvarchar](50) ,
    .....
)
WITH (
    LOCATION='/DEAL/',   --文件地址
    DATA_SOURCE=AzureStorage_DataSource, 
    FILE_FORMAT=csvdelimitedfile
);
  1. 建好外表之后,還需要使用CTAS(Create Table As Select)把數(shù)據(jù)導(dǎo)入SQL DW
CREATE TABLE [dbo].[DEAL_DETAILS]
WITH (
    DISTRIBUTION = ROUND_ROBIN
) 
AS SELECT * FROM [dbo].[DEAL_DETAILS_EXT]             
OPTION (
    LABEL = 'CTAS : Load [dbo].[DEAL_DETAILS]'
);

下圖是用最基礎(chǔ)的配置DWU400的SQL Data Warehouse加載完這100G的Raw Data,時(shí)間只要12分鐘不到


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容