Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2016 (13.x) és újabb verziók Windows rendszeren
A cikk bemutatja, hogyan használható a PolyBase egy SQL Server-példányon külső adatok lekérdezésére az Azure Blob Storage-ban.
Előfeltételek
Ha még nem telepítette a PolyBase-t, olvassa el a PolyBase telepítése Windows rendszeren című témakört. A telepítési cikk ismerteti az előfeltételeket.
SQL Server 2022
Az SQL Server 2022-ben (16.x) konfigurálja a külső adatforrásokat új összekötők használatára az Azure Storage-hoz való csatlakozáskor. Az alábbi táblázat összefoglalja a módosítást:
| Külső adatforrás | Ettől kezdve | Hoz |
|---|---|---|
| Azure Blob Storage | wasb[s] | Abs |
| ADLS Gen 2 | abfs[s] | adls |
Az Azure Blob Storage-kapcsolat konfigurálása
Először konfigurálja az SQL Server PolyBase-t az Azure Blob Storage használatára.
Futtassa a sp_configure parancsot úgy, hogy azt egy Azure Blob Storage-szolgáltatóként állítja be
'hadoop connectivity'. A szolgáltatók értékének megkereséséhez tekintse meg a PolyBase kapcsolati konfigurációját. A Hadoop-kapcsolat alapértelmezés szerint a következőre7van állítva: .-- 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 EXECUTE sp_configure @configname = 'hadoop connectivity', @configvalue = 7; GO RECONFIGURE;Indítsa újra az SQL Servert a services.mschasználatával. Az SQL Server újraindítása a következő szolgáltatásokat indítja újra:
- SQL Server PolyBase adatáthelyezési szolgáltatás
- SQL Server PolyBase-motor
Indítsa újra az SQL Servert a services.mschasználatával. Az SQL Server újraindítása a következő szolgáltatásokat indítja újra:
- SQL Server PolyBase adatáthelyezési szolgáltatás
- SQL Server PolyBase-motor
Külső tábla konfigurálása
A Hadoop-adatforrásban lévő adatok lekérdezéséhez meg kell adnia egy külső táblát, amelyet Transact-SQL lekérdezésekben kell használni. Az alábbi lépések a külső tábla konfigurálását ismertetik.
Hozzon létre egy adatbázis-főkulcsot (DMK) az adatbázisban. A hitelesítő adatok titkos kulcsának titkosításához a DMK szükséges.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';Adatbázis-hatókörű hitelesítő adatok létrehozása az Azure Blob Storage-hoz;
IDENTITYbármi lehet, mivel nincs használatban.-- 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>';Hozzon létre egy külső adatforrást a .CREATE EXTERNAL DATA SOURCE Ha az összekötőn keresztül csatlakozik az Azure Storage-hoz, a
wasb[s]hitelesítést tárfiók-kulccsal kell elvégezni, nem pedig közös hozzáférésű jogosultságkóddal (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 );Hozzon létre egy külső fájlformátumot a(z) CREATE EXTERNAL FILE FORMAT használatával.
-- 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) );Hozzon létre egy külső táblát, amely Azure tárolóban tárolt adatokra mutat a következővelCREATE EXTERNAL TABLE: . Ebben a példában a külső adatok autóérzékelő adatokat tartalmaznak;
LOCATIONnem lehet/, de/Demo/, mint ebben a példában, nem kell korábban léteznie.-- 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 ( DATA_SOURCE = AzureStorage, LOCATION = '/Demo/', FILE_FORMAT = TextFileFormat );Statisztikák létrehozása külső táblán.
CREATE STATISTICS StatsForSensors ON CarSensor_Data(CustomerKey, Speed);
Hozzon létre egy adatbázis-főkulcsot (DMK) az adatbázisban. A hitelesítő adatok titkos kulcsának titkosításához a DMK szükséges.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';Adatbázis-hatókörű hitelesítő adatok létrehozása az Azure Blob Storage-hoz közös hozzáférésű jogosultságkód (SAS) használatával;
IDENTITYbármi lehet, mivel nincs használatban.CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- Remove ? from the beginning of the SAS token SECRET = '<azure_shared_access_signature>';Hozzon létre egy külső adatforrást a .CREATE EXTERNAL DATA SOURCE Amikor a WASB[s] összekötőn keresztül csatlakozik az Azure Storage-hoz, a hitelesítés közös hozzáférésű jogosultságkóddal (SAS) történik.
-- 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 );Hozzon létre egy külső fájlformátumot a(z) CREATE EXTERNAL FILE FORMAT használatával.
-- 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) );Hozzon létre egy külső táblát, amely Azure tárolóban tárolt adatokra mutat a következővelCREATE EXTERNAL TABLE: . Ebben a példában a külső adatok autóérzékelő adatokat tartalmaznak;
LOCATIONnem lehet/, de/Demo/, mint ebben a példában, nem kell korábban léteznie.-- 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 ( DATA_SOURCE = AzureStorage, LOCATION = '/Demo/', FILE_FORMAT = TextFileFormat );Statisztikák létrehozása külső táblán.
CREATE STATISTICS StatsForSensors ON CarSensor_Data(CustomerKey, Speed);
PolyBase-lekérdezések
A PolyBase három függvényhez használható:
- Alkalmi lekérdezések külső táblákon.
- Adatok importálása.
- Adatok exportálása.
Az alábbi lekérdezések példaként szolgálnak az autóérzékelők fiktív adataival.
Alkalmi lekérdezések
Az alábbi alkalmi lekérdezés relációs viszonyt illeszt a Hadoop-adatokhoz. Kiválasztja azokat az ügyfeleket, akik 35 mph-nál gyorsabban hajtanak, és a Hadoopban tárolt autóérzékelős adatokkal csatlakozik az SQL Serverben tárolt strukturált ügyféladatokhoz.
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)
Adatok importálása a PolyBase használatával
Az alábbi lekérdezés külső adatokat importál az SQL Serverbe. Ez a példa a gyors illesztőprogramok adatait importálja az SQL Serverbe, hogy részletesebb elemzést végezhessenek. A teljesítmény javítása érdekében oszloptároló technológiát használ.
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;
Adatok exportálása a PolyBase használatával
Az alábbi lekérdezés adatokat exportál az SQL Serverről az Azure Blob Storage-ba. Először engedélyezze a PolyBase exportálását. Ezután hozzon létre egy külső táblát a célhelyhez az adatok exportálása előtt.
-- Enable INSERT into external table
EXECUTE sp_configure 'allow polybase export', 1;
RECONFIGURE;
GO
-- 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 (
DATA_SOURCE = HadoopHDP2,
LOCATION = '/old_data/2009/customerdata',
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 AS T1
INNER JOIN CarSensor_Data AS T2
ON (T1.CustomerKey = T2.CustomerKey)
WHERE T2.YearMeasured = 2009
AND T2.Speed > 40;
Az ezzel a módszerrel történő PolyBase-exportálás több fájlt is létrehozhat.
PolyBase-objektumok megtekintése az SSMS-ben
Az SSMS-ben a külső táblák külön mappában jelennek meg, Külső táblák. A külső adatforrások és a külső fájlformátumok a külső erőforrások almappáiban találhatók.
Kapcsolódó tartalom
- PolyBase Transact-SQL referencia
- PolyBase vertikális felskálázási csoportok
- PolyBase- monitorozása és hibaelhárítása
- CREATE EXTERNAL DATA SOURCE (Transact-SQL)