Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server (tylko system Windows)
usługa Azure SQL Database
usługa Azure Synapse Analytics
Analytics Platform System (PDW)
W tym artykule wyjaśniono, jak używać technologii PolyBase w wystąpieniu programu SQL Server do wykonywania zapytań dotyczących danych zewnętrznych w usłudze Azure Blob Storage.
Warunki wstępne
Jeśli nie zainstalowano programu PolyBase, zobacz instalacja programu PolyBase. W artykule dotyczącym instalacji wyjaśniono wymagania wstępne.
SQL Server 2022
W programie SQL Server 2022 (16.x) skonfiguruj zewnętrzne źródła danych do używania nowych łączników podczas nawiązywania połączenia z usługą Azure Storage. Poniższa tabela zawiera podsumowanie zmian:
Zewnętrzne źródło danych | Z | Do |
---|---|---|
Azure Blob Storage | wasb[s] | Mięśnie brzucha |
ADLS Gen 2 | abfs[s] | adls |
Konfigurowanie łączności usługi Azure Blob Storage
Najpierw skonfiguruj program SQL Server PolyBase do korzystania z usługi Azure Blob Storage.
Uruchom sp_configure, ustawiając 'łączność hadoop' z dostawcą Azure Blob Storage. Aby znaleźć wartość dla dostawców, zobacz Konfigurację łączności PolyBase. Domyślnie łączność z usługą Hadoop jest ustawiona na 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
Uruchom ponownie program SQL Server przy użyciu services.msc. Ponowne uruchomienie programu SQL Server powoduje ponowne uruchomienie tych usług:
- Usługa przenoszenia danych programu SQL Server PolyBase
- Aparat programu SQL Server PolyBase
Uruchom ponownie program SQL Server przy użyciu services.msc. Ponowne uruchomienie programu SQL Server powoduje ponowne uruchomienie tych usług:
- Usługa przenoszenia danych programu SQL Server PolyBase
- Aparat programu SQL Server PolyBase
Konfigurowanie tabeli zewnętrznej
Aby wykonać zapytanie dotyczące danych w źródle danych usługi Hadoop, należy zdefiniować tabelę zewnętrzną do użycia w zapytaniach Transact-SQL. W poniższych krokach opisano sposób konfigurowania tabeli zewnętrznej.
Utwórz klucz główny w bazie danych. Klucz główny jest wymagany do szyfrowania tajemnicy poświadczenia.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
Utwórz poświadczenie powiązane z zakresem bazy danych dla usługi Azure Blob Storage;
IDENTITY
może być dowolne, ponieważ nie jest używane.-- 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>';
Utwórz zewnętrzne źródło danych za pomocą CREATE EXTERNAL DATA SOURCE. Należy pamiętać, że podczas nawiązywania połączenia z usługą Azure Storage za pośrednictwem łącznika
wasb[s]
należy przeprowadzić uwierzytelnianie przy użyciu klucza konta magazynu, a nie przy użyciu sygnatury dostępu współdzielonego (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 );
Utwórz format pliku zewnętrznego za 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))
Utwórz tabelę zewnętrzną wskazującą dane przechowywane w usłudze Azure Storage za pomocą CREATE EXTERNAL TABLE. W tym przykładzie dane zewnętrzne zawierają dane z czujników samochodowych;
LOCATION
nie może być/
, ale/Demo/
, jak pokazano w tym przykładzie, nie musi wcześniej istnieć.-- 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 );
Utwórz statystyki dotyczące tabeli zewnętrznej.
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)
Utwórz klucz główny w bazie danych. Klucz główny jest wymagany do szyfrowania tajemnicy poświadczenia.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
Tworzenie poświadczeń o zakresie bazy danych dla usługi Azure Blob Storage za pomocą sygnatury dostępu współdzielonego (SAS);
IDENTITY
może być dowolna, ponieważ nie jest używana.CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential WITH IDENTITY = 'SHARED ACCESS SIGNATURE', -- Remove ? from the beginning of the SAS token SECRET = '<azure_shared_access_signature>' ;
Utwórz zewnętrzne źródło danych za pomocą CREATE EXTERNAL DATA SOURCE. Należy pamiętać, że podczas nawiązywania połączenia z usługą Azure Storage za pośrednictwem łącznika WASB wymagane jest uwierzytelnianie za pomocą sygnatury dostępu współdzielonego (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 );
Utwórz format pliku zewnętrznego za 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))
Utwórz tabelę zewnętrzną wskazującą dane przechowywane w usłudze Azure Storage za pomocą CREATE EXTERNAL TABLE. W tym przykładzie dane zewnętrzne zawierają dane z czujników samochodowych,
LOCATION
nie może być/
, ale/Demo/
jak w tym przykładzie, nie musi istnieć wcześniej.-- 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 );
Utwórz statystyki na tabeli zewnętrznej.
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)
Zapytania programu PolyBase
Istnieją trzy funkcje, dla których technologia PolyBase jest odpowiednia:
- Zapytania ad hoc względem tabel zewnętrznych.
- Importowanie danych.
- Eksportowanie danych.
Poniższe zapytania zawierają przykład fikcyjnych danych z czujników samochodów.
Zapytania ad hoc
Następujące zapytanie ad hoc łączy dane relacyjne z danymi Hadoop. Wybiera klientów, którzy jeżdżą szybciej niż 35 mph, i dołącza do ustrukturyzowanych danych klientów przechowywanych w programie SQL Server z danymi czujnika samochodu przechowywanymi w usłudze Hadoop.
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)
Importowanie danych za pomocą technologii PolyBase
Poniższe zapytanie importuje dane zewnętrzne do programu SQL Server. W tym przykładzie importuje dane dla szybkich sterowników do programu SQL Server w celu przeprowadzenia bardziej szczegółowej analizy. Aby zwiększyć wydajność, wykorzystuje technologię kolumnowej bazy danych.
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;
Eksportowanie danych za pomocą technologii PolyBase
Poniższe zapytanie eksportuje dane z programu SQL Server do usługi Azure Blob Storage. Najpierw włącz eksport za pomocą PolyBase. Następnie utwórz tabelę zewnętrzną dla miejsca docelowego przed wyeksportowaniem do niej danych.
-- 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;
Eksportowanie programu PolyBase za pomocą tej metody może spowodować utworzenie wielu plików.
Wyświetlanie obiektów PolyBase w programie SSMS
W programie SSMS tabele zewnętrzne są wyświetlane w osobnym folderze Tabele zewnętrzne. Zewnętrzne źródła danych i zewnętrzne formaty plików znajdują się w podfolderach pod Zasoby Zewnętrzne.
Następne kroki
Aby uzyskać więcej samouczków dotyczących tworzenia zewnętrznych źródeł danych i tabel zewnętrznych w różnych źródłach danych, odwołaj się do referencji PolyBase Transact-SQL.
Zapoznaj się z dodatkowymi sposobami używania i monitorowania technologii PolyBase w następujących artykułach: