Číst v angličtině

Sdílet prostřednictvím


Konfigurace PolyBase pro přístup k externím datům ve službě Azure Blob Storage

platí pro: SQL Server (jenom Windows) Nepodporuje se. Azure SQL Database Nepodporuje se. Azure Synapse Analytics Nepodporuje se. Analytics Platform System (PDW)

Tento článek vysvětluje, jak pomocí PolyBase v instanci SQL Serveru dotazovat externí data ve službě Azure Blob Storage.

Požadavky

Pokud jste nenainstalovali PolyBase, přečtěte si instalace PolyBase . Článek o instalaci vysvětluje požadavky.

SQL Server 2022

V SQL Serveru 2022 (16.x) nakonfigurujte externí zdroje dat tak, aby při připojování ke službě Azure Storage používaly nové konektory. Následující tabulka shrnuje změnu:

Externí zdroj dat Od Do
Azure Blob Storage wasb[s] břišní svaly
ADLS Gen2 abfs[s] adls

Konfigurace připojení ke službě Azure Blob Storage

Nejprve nakonfigurujte SQL Server PolyBase tak, aby používal Azure Blob Storage.

  1. Spusťte sp_configure s připojením hadoop nastaveným na poskytovatele služby Azure Blob Storage. Pokud chcete zjistit hodnotu pro poskytovatele, podívejte se na konfiguraci připojení PolyBase. Ve výchozím nastavení je připojení Hadoop nastaveno na hodnotu 7.

    SQL
    -- Values map to various external data sources.  
    -- Example: value 7 stands for Hortonworks HDP 2.1 to 2.6 on Linux,
    -- 2.1 to 2.3 on Windows Server, and Azure Blob Storage  
    sp_configure @configname = 'hadoop connectivity', @configvalue = 7;
    GO
    
    RECONFIGURE
    GO
    
  2. Restartujte SQL Server pomocí services.msc. Restartování SQL Serveru restartuje tyto služby:

    • SQL Server PolyBase Data Movement Service (služba pro přesun dat)
    • SQL Server PolyBase Engine

    zastavte a spusťte služby PolyBase v services.msc

  1. Restartujte SQL Server pomocí services.msc. Restartování SQL Serveru restartuje tyto služby:

    • SQL Server PolyBase Data Movement Service
    • SQL Server PolyBase Engine

    zastavení a spuštění služeb PolyBase v services.msc

Konfigurace externí tabulky

Pokud chcete dotazovat data ve zdroji dat Hadoop, musíte definovat externí tabulku, která se má použít v Transact-SQL dotazech. Následující kroky popisují, jak nakonfigurovat externí tabulku.

  1. Vytvořte v databázi hlavní klíč. Hlavní klíč je nutný k šifrování tajného klíče přihlašovacích údajů.

    SQL
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';  
    
  2. Vytvořte přihlašovací údaje s databázovým oborem pro Azure Blob Storage; IDENTITY může být cokoli, protože se nepoužívá.

    SQL
    -- IDENTITY: any string (this is not used for authentication to Azure storage).  
    -- SECRET: your Azure storage account key.  
    CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH IDENTITY = 'user', Secret = '<azure_storage_account_key>';
    
  3. Vytvořte externí zdroj dat s použitím CREATE EXTERNAL DATA SOURCE. Všimněte si, že při připojování ke službě Azure Storage přes konektor wasb[s] musí být ověřování provedeno pomocí klíče účtu úložiště, nikoli se sdíleným přístupovým podpisem (SAS).

    SQL
    -- LOCATION:  Azure account storage account name and blob container name.  
    -- CREDENTIAL: The database scoped credential created above.  
    CREATE EXTERNAL DATA SOURCE AzureStorage with (  
          TYPE = HADOOP,
          LOCATION ='wasbs://<blob_container_name>@<azure_storage_account_name>.blob.core.windows.net',  
          CREDENTIAL = AzureStorageCredential  
    );  
    
  4. Vytvořte formát externího souboru pomocí CREATE EXTERNAL FILE FORMAT.

    SQL
    -- FORMAT TYPE: Type of format in Hadoop (DELIMITEDTEXT,  RCFILE, ORC, PARQUET).
    CREATE EXTERNAL FILE FORMAT TextFileFormat WITH (  
          FORMAT_TYPE = DELIMITEDTEXT,
          FORMAT_OPTIONS (FIELD_TERMINATOR ='|',
                USE_TYPE_DEFAULT = TRUE))  
    
  5. Vytvořte externí tabulku odkazující na data uložená v úložišti Azure pomocí CREATE EXTERNAL TABLE. V tomto příkladu externí data obsahují data snímačů automobilů; LOCATION nemůže být /, ale /Demo/, protože v tomto příkladu nemusí existovat dříve.

    SQL
    -- LOCATION: path to file or directory that contains the data (relative to HDFS root).  
    CREATE EXTERNAL TABLE [dbo].[CarSensor_Data] (  
          [SensorKey] int NOT NULL,
          [CustomerKey] int NOT NULL,
          [GeographyKey] int NULL,
          [Speed] float NOT NULL,
          [YearMeasured] int NOT NULL  
    )  
    WITH (LOCATION='/Demo/',
          DATA_SOURCE = AzureStorage,  
          FILE_FORMAT = TextFileFormat  
    );  
    
  6. Vytvoření statistiky pro externí tabulku

    SQL
    CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)  
    
  1. Vytvořte v databázi hlavní klíč. Hlavní klíč je nutný k šifrování tajného klíče přihlašovacích údajů.

    SQL
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';  
    
  2. Vytvořte přihlašovací údaje s omezeným dosahem pro databázi Azure Blob Storage pomocí sdíleného přístupového podpisu (SAS); IDENTITY může být cokoli, protože se nepoužívá.

    SQL
    CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
    WITH
    IDENTITY = 'SHARED ACCESS SIGNATURE',
    -- Remove ? from the beginning of the SAS token
    SECRET = '<azure_shared_access_signature>' ;
    
  3. Vytvořte externí zdroj dat pomocí VYTVOŘIT EXTERNÍ ZDROJ DAT. Všimněte si, že při připojování ke službě Azure Storage přes konektor WASB[s] se používá ověřování pomocí sdíleného přístupového podpisu (SAS).

    SQL
    -- LOCATION:  Azure account storage account name and blob container name.  
    -- CREDENTIAL: The database scoped credential created above.  
    CREATE EXTERNAL DATA SOURCE AzureStorage with (  
          LOCATION ='wasbs://<blob_container_name>@<azure_storage_account_name>.blob.core.windows.net',  
          CREDENTIAL = AzureStorageCredential  
    );  
    
  4. Vytvořte formát externího souboru pomocí CREATE EXTERNAL FILE FORMAT.

    SQL
    -- FORMAT TYPE: Type of format in Hadoop (DELIMITEDTEXT,  RCFILE, ORC, PARQUET).
    CREATE EXTERNAL FILE FORMAT TextFileFormat WITH (  
          FORMAT_TYPE = DELIMITEDTEXT,
          FORMAT_OPTIONS (FIELD_TERMINATOR ='|',
                USE_TYPE_DEFAULT = TRUE))  
    
  5. Vytvořte externí tabulku odkazující na data uložená v úložišti Azure pomocí CREATE EXTERNAL TABLE. V tomto příkladu externí data obsahují data snímačů automobilů; LOCATION nemůže být /, ale /Demo/, protože v tomto příkladu nemusí existovat dříve.

    SQL
    -- LOCATION: path to file or directory that contains the data (relative to HDFS root).  
    CREATE EXTERNAL TABLE [dbo].[CarSensor_Data] (  
          [SensorKey] int NOT NULL,
          [CustomerKey] int NOT NULL,
          [GeographyKey] int NULL,
          [Speed] float NOT NULL,
          [YearMeasured] int NOT NULL  
    )  
    WITH (LOCATION='/Demo/',
          DATA_SOURCE = AzureStorage,  
          FILE_FORMAT = TextFileFormat  
    );  
    
  6. Vytvoření statistiky pro externí tabulku

    SQL
    CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)  
    

Dotazy PolyBase

Existují tři funkce, pro které je PolyBase vhodná:

  • Ad hoc dotazy na externí tabulky
  • Import dat.
  • Exportování dat.

Následující dotazy poskytují příklad s fiktivními daty snímačů aut.

Ad hoc dotazy

Následující ad hoc dotaz spojí relační s daty Hadoop. Vybere zákazníky, kteří jezdí rychleji než 35 mph, a připojí se ke strukturovaným zákaznickým datům uloženým na SQL Serveru s daty snímačů aut uloženými v Hadoopu.

SQL
SELECT DISTINCT Insured_Customers.FirstName,Insured_Customers.LastName,
       Insured_Customers. YearlyIncome, CarSensor_Data.Speed  
FROM Insured_Customers, CarSensor_Data  
WHERE Insured_Customers.CustomerKey = CarSensor_Data.CustomerKey and CarSensor_Data.Speed > 35
ORDER BY CarSensor_Data.Speed DESC  
OPTION (FORCE EXTERNALPUSHDOWN);   -- or OPTION (DISABLE EXTERNALPUSHDOWN)  

Import dat pomocí PolyBase

Následující dotaz naimportuje externí data do SQL Serveru. Tento příklad importuje data pro rychlé řidiče do SQL Serveru, aby bylo možné provést podrobnější analýzu. Ke zlepšení výkonu využívá technologii sloupcového uložení.

SQL
SELECT DISTINCT
      Insured_Customers.FirstName, Insured_Customers.LastName,   
      Insured_Customers.YearlyIncome, Insured_Customers.MaritalStatus  
INTO Fast_Customers from Insured_Customers INNER JOIN   
(  
      SELECT * FROM CarSensor_Data where Speed > 35   
) AS SensorD  
ON Insured_Customers.CustomerKey = SensorD.CustomerKey  
ORDER BY YearlyIncome  
  
CREATE CLUSTERED COLUMNSTORE INDEX CCI_FastCustomers ON Fast_Customers;  

Export dat pomocí PolyBase

Následující dotaz exportuje data z SQL Serveru do služby Azure Blob Storage. Nejprve zapněte export PolyBase. Potom před exportem dat do cíle vytvořte externí tabulku pro cíl.

SQL
-- Enable INSERT into external table  
sp_configure 'allow polybase export', 1;  
reconfigure  
  
-- Create an external table.
CREATE EXTERNAL TABLE [dbo].[FastCustomers2009] (  
      [FirstName] char(25) NOT NULL,
      [LastName] char(25) NOT NULL,
      [YearlyIncome] float NULL,
      [MaritalStatus] char(1) NOT NULL  
)  
WITH (  
      LOCATION='/old_data/2009/customerdata',  
      DATA_SOURCE = HadoopHDP2,  
      FILE_FORMAT = TextFileFormat,  
      REJECT_TYPE = VALUE,  
      REJECT_VALUE = 0  
);  

-- Export data: Move old data to Hadoop while keeping it query-able via an external table.  
INSERT INTO dbo.FastCustomer2009  
SELECT T.* FROM Insured_Customers T1 JOIN CarSensor_Data T2  
ON (T1.CustomerKey = T2.CustomerKey)  
WHERE T2.YearMeasured = 2009 and T2.Speed > 40;  

Export PolyBase pomocí této metody může vytvořit více souborů.

Zobrazení objektů PolyBase v SSMS

V nástroji SSMS se externí tabulky zobrazují v samostatné složce externí tabulky. Externí zdroje dat a formáty externích souborů jsou v podsložkách v části Externí zdroje.

objekty PolyBase v SSMS

Další kroky

Další kurzy týkající se vytváření externích zdrojů dat a externích tabulek pro různé zdroje dat najdete v tématu PolyBase Transact-SQL referenční.

Další způsoby použití a monitorování PolyBase najdete v následujících článcích: