Konfigurace PolyBase pro přístup k externím datům ve službě Azure Blob Storage
platí pro: SQL Server (jenom Windows)
Azure SQL Database
Azure Synapse Analytics
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.
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.
-- 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
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
Restartujte SQL Server pomocí services.msc. Restartování SQL Serveru restartuje tyto služby:
- SQL Server PolyBase Data Movement Service
- SQL Server PolyBase Engine
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.
Vytvořte v databázi hlavní klíč. Hlavní klíč je nutný k šifrování tajného klíče přihlašovacích údajů.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
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á.-- 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>';
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).-- 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 );
Vytvořte formát externího souboru pomocí CREATE EXTERNAL FILE FORMAT.
-- 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))
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.-- 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 );
Vytvoření statistiky pro externí tabulku
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)
Vytvořte v databázi hlavní klíč. Hlavní klíč je nutný k šifrování tajného klíče přihlašovacích údajů.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
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á.CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- Remove ? from the beginning of the SAS token SECRET = '<azure_shared_access_signature>' ;
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).
-- 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 );
Vytvořte formát externího souboru pomocí CREATE EXTERNAL FILE FORMAT.
-- 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))
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.-- 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 );
Vytvoření statistiky pro externí tabulku
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.
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í.
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.
-- 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.
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: