Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O artigo explica como usar o PolyBase em uma instância do SQL Server para consultar dados externos no Armazenamento de Blobs do Azure.
Observação
Atualmente, o APS suporta apenas Azure Blob Storage padrão v1 de uso geral localmente redundante (LRS).
Pré-requisitos
- Azure Blob Storage na sua subscrição.
- Um contentor criado no Azure Blob Storage.
Configurar a conectividade do Armazenamento de Blobs do Azure
Primeiro, configure o APS para usar Azure Blob Storage.
Execute sp_configure com 'conectividade hadoop' definida para um fornecedor de Azure Blob Storage. Para encontrar o valor para os fornecedores, consulte Configuração de Conectividade PolyBase.
-- 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 GOReinicie a Região APS usando a página de Estado do Serviço no Gestor de Configuração do Appliance.
Configurar uma tabela externa
Para consultar os dados no seu Azure Blob Storage, deve definir uma tabela externa para usar em consultas Transact-SQL. As etapas a seguir descrevem como configurar a tabela externa.
Crie uma chave mestra no banco de dados. É necessário encriptar o segredo da credencial.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo';Crie uma credencial com âmbito de base de dados para 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>';Crie uma fonte de dados externa com CRIAR FONTE DE DADOS EXTERNA..
-- 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 );Crie um formato de arquivo externo com CREATE EXTERNAL FILE FORMAT.
-- 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)Crie uma tabela externa apontando para os dados armazenados no armazenamento do Azure com CREATE EXTERNAL TABLE. Neste exemplo, os dados externos contêm dados do sensor do carro.
-- 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 );Crie estatísticas em uma tabela externa.
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)
Consultas PolyBase
Existem três funções para as quais o PolyBase é adequado:
- Consultas ad hoc em tabelas externas.
- Importação de dados.
- Exportação de dados.
As consultas a seguir fornecem exemplos com dados fictícios do sensor do carro.
Consultas ad hoc
A seguinte consulta ad hoc junta o relacional com os dados no Azure Blob Storage. Seleciona clientes que conduzem a uma velocidade superior a 35 mph, juntando dados estruturados de clientes armazenados no SQL Server com dados de sensores automóveis armazenados no Azure Blob Storage.
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
Importar dados
A consulta seguinte importa dados externos para o APS. Este exemplo importa dados de condutores rápidos para o APS para realizar análises mais aprofundadas. Para melhorar o desempenho, utiliza a tecnologia Columnstore no 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
Exportar Dados
A consulta seguinte exporta dados do APS para o Azure Blob Storage. Pode ser usado para arquivar dados relacionais no Azure Blob Storage, mantendo ainda assim a possibilidade de os consultar.
-- 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;
Ver objetos PolyBase em SSDT
No SQL Server Data Tools (SSDT), tabelas externas são exibidas numa pasta separada, Tabelas Externas. Fontes de dados externas e formatos de arquivo externos estão em subpastas em Recursos Externos.