Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie PolyBase in einer SQL Server-Instanz verwenden, um externe Daten in Azure Blob Storage abzufragen.
Hinweis
APS unterstützt derzeit nur den standardmäßigen allgemeinen v1 (lokale Redundanz, LRS) Azure Blob Storage.
Voraussetzungen
- Azure Blob Storage in Ihrem Abonnement.
- Ein Container, der im Azure Blob Storage erstellt wurde.
Konfigurieren der Azure Blob Storage-Konnektivität
Konfigurieren Sie zunächst APS für die Verwendung von Azure Blob Storage.
Führen Sie sp_configure aus, wobei "hadoop connectivity" auf einen Azure Blob Storage-Anbieter festgelegt ist. Informationen zum Wert für Anbieter finden Sie unter PolyBase Connectivity Configuration.
-- 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 GOStarten Sie die APS-Region mithilfe der Seite "Dienststatus" in Appliance Configuration Manager neu.
Konfigurieren einer externen Tabelle
Um die Daten in Ihrem Azure Blob Storage abzufragen, müssen Sie eine externe Tabelle definieren, die in Transact-SQL Abfragen verwendet werden soll. Die folgenden Schritte beschreiben, wie Sie die externe Tabelle konfigurieren.
Erstellen Sie einen Hauptschlüssel in der Datenbank. Es ist erforderlich, das Anmeldegeheimnis zu verschlüsseln.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo';Erstellen Sie Datenbank-Scoping-Anmeldeinformationen für Azure Blob Storage.
-- 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>';Erstellen Sie eine externe Datenquelle mit CREATE EXTERNAL DATA SOURCE..
-- 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 );Erstellen Sie mit CREATE EXTERNAL FILE FORMAT ein externes Dateiformat.
-- FORMAT TYPE: Type of format in Azure Blob Storage (DELIMITEDTEXT, RCFILE, ORC, PARQUET). -- In this example, the files are pipe (|) delimited CREATE EXTERNAL FILE FORMAT TextFileFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS (FIELD_TERMINATOR ='|', USE_TYPE_DEFAULT = TRUE)Erstellen Sie mit CREATE EXTERNAL TABLE eine externe Tabelle, die auf in Azure Storage gespeicherte Daten verweist. In diesem Beispiel handelt es sich bei den externen Daten um Kfz-Sensordaten.
-- 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 );Erstellen Sie Statistiken für eine externe Tabelle.
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)
PolyBase-Abfragen
Es gibt drei Funktionen, für die PolyBase geeignet ist:
- Ad-hoc-Abfragen für externe Tabellen
- Importieren von Daten
- Exportieren von Daten
Die folgenden Abfragen stellen fiktive Kfz-Sensordaten für das Beispiel bereit.
Ad-hoc-Abfragen
Die folgende Ad-hoc-Abfrage verknüpft relationale Daten mit Daten in Azure Blob Storage. Es wählt Kunden aus, die schneller als 35 mph fahren und strukturierte Kundendaten verknüpfen, die in SQL Server gespeichert sind, mit in Azure Blob Storage gespeicherten Autosensordaten.
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
Daten importieren
Die folgende Abfrage importiert externe Daten in APS. In diesem Beispiel werden Daten für schnelle Treiber in APS importiert, um eine eingehendere Analyse durchzuführen. Um die Leistung zu verbessern, nutzt sie die Columnstore-Technologie in APS.
CREATE TABLE Fast_Customers
WITH
(CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = HASH (CustomerKey))
AS
SELECT DISTINCT
Insured_Customers.CustomerKey, Insured_Customers.FirstName, Insured_Customers.LastName,
Insured_Customers.YearlyIncome, Insured_Customers.MaritalStatus
from Insured_Customers INNER JOIN
(
SELECT * FROM CarSensor_Data where Speed > 35
) AS SensorD
ON Insured_Customers.CustomerKey = SensorD.CustomerKey
Daten exportieren
Die folgende Abfrage exportiert Daten aus APS in Azure Blob Storage. Es kann verwendet werden, um relationale Daten in Azure Blob Storage zu archivieren, während weiterhin darauf zugegriffen werden kann.
-- Export data: Move old data to Azure Blob Storage while keeping it query-able via an external table.
CREATE EXTERNAL TABLE [dbo].[FastCustomers2009]
WITH (
LOCATION='/archive/customer/2009',
DATA_SOURCE = AzureStorage,
FILE_FORMAT = TextFileFormat
)
AS
SELECT T.* FROM Insured_Customers T1 JOIN CarSensor_Data T2
ON (T1.CustomerKey = T2.CustomerKey)
WHERE T2.YearMeasured = 2009 and T2.Speed > 40;
Anzeigen von PolyBase-Objekten in SSDT
In SQL Server Data Tools (SSDT) werden externe Tabellen in einem separaten Ordner "Externe Tabellen" angezeigt. Externe Datenquellen und externe Dateiformate befinden sich in Unterordnern unter Externe Ressourcen.