Eventos
31 de mar., 23 - 2 de abr., 23
O maior evento de aprendizado de SQL, Fabric e Power BI. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $ 400.
Registre-se hoje mesmoNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Aplica-se a: SQL Server (somente Windows)
Banco de Dados SQL do Azure
Azure Synapse Analytics
PDW (Analytics Platform System)
O artigo explica como usar o PolyBase em uma instância do SQL Server para consultar dados externos no Armazenamento de Blobs do Azure.
Se você ainda não instalou o PolyBase, veja Instalação do PolyBase. O artigo sobre a instalação explica os pré-requisitos.
No SQL Server 2022 (16.x), configure suas fontes de dados externas para usar os conectores novos ao se conectar ao Azure Storage. A tabela a seguir resume a alteração:
Fonte de dados externa | De | Para |
---|---|---|
Armazenamento do Blobs do Azure | wasb[s] | abs |
ADLS Gen 2 | abfs[s] | adls |
Primeiro, configure o PolyBase do SQL Server para usar o Armazenamento de Blobs do Azure.
Execute sp_configure com "conectividade do hadoop" definido como um provedor do Armazenamento de Blobs do Azure. Para encontrar o valor dos provedores, consulte Configuração de conectividade do PolyBase. Por padrão, a conectividade de Hadoop é definida como 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
Reinicie o SQL Server usando services.msc. A reinicialização do o SQL Server reiniciará estes serviços:
Reinicie o SQL Server usando services.msc. A reinicialização do o SQL Server reiniciará estes serviços:
Para consultar os dados em sua fonte de dados do Hadoop, você precisa 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. A chave mestra é necessária para criptografar o segredo da credencial.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
Crie uma credencial com escopo de banco de dados para o Armazenamento de Blobs do Azure. A IDENTITY
pode ser qualquer coisa, pois não foi usada.
-- 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, usando CREATE EXTERNAL DATA SOURCE. Observe que, ao se conectar ao Azure Storage por meio do conector wasb[s]
, a autenticação deve ser feita com uma chave de conta de armazenamento, não com uma assinatura de acesso compartilhado (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
);
Crie um formato de arquivo externo com 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))
Crie uma tabela externa que aponta para dados armazenados no armazenamento do Azure com CREATE EXTERNAL TABLE. Neste exemplo, os dados externos contêm dados de sensor de carros; LOCATION
não pode ser /
, mas /Demo/
, como neste exemplo, não precisa existir anteriormente.
-- 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)
Crie uma chave mestra no banco de dados. A chave mestra é necessária para criptografar o segredo da credencial.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
Crie uma credencial com escopo de banco de dados para o Armazenamento de Blobs do Azure usando uma assinatura de acesso compartilhado (SAS). A IDENTITY
pode ser qualquer coisa, pois não é usada.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
IDENTITY = 'SHARED ACCESS SIGNATURE',
-- Remove ? from the beginning of the SAS token
SECRET = '<azure_shared_access_signature>' ;
Crie uma fonte de dados externa, usando CREATE EXTERNAL DATA SOURCE. Observe que, ao se conectar ao Azure Storage por meio do conector WASB[s], a autenticação deve ser feita com uma assinatura de acesso compartilhado (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
);
Crie um formato de arquivo externo com 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))
Crie uma tabela externa que aponta para dados armazenados no armazenamento do Azure com CREATE EXTERNAL TABLE. Neste exemplo, os dados externos contêm dados de sensor de carros; LOCATION
não pode ser /
, mas /Demo/
, como neste exemplo, não precisa existir anteriormente.
-- 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)
O PolyBase é adequado para três funções:
As consultas a seguir fornecem exemplo com os dados de sensor de carro fictícios.
A consulta ad hoc a seguir associa dados relacionais aos dados do Hadoop. Ela seleciona clientes que dirigem mais rápido do que 55 km/h e reúne dados estruturados do cliente armazenados no SQL Server com os dados de sensor de carro armazenados no 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)
A consulta a seguir importa dados externos para o SQL Server. Este exemplo importa dados de motoristas velozes para o SQL Server para fazer uma análise mais detalhada. Para melhorar o desempenho, ela aproveita a tecnologia de Columnstore.
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;
A consulta a seguir exporta dados do SQL Server para Armazenamento de Blobs do Azure. Primeiro, habilite a exportação do PolyBase. Em seguida, crie uma tabela externa para o destino antes de exportar dados para ele.
-- 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;
A exportação do PolyBase com esse método pode criar vários arquivos.
No SSMS, as tabelas externas são exibidas em uma pasta separada Tabelas Externas. As fontes de dados externas e os formatos de arquivo externos estão em subpastas em Recursos Externos.
Para obter mais tutoriais sobre como criar fontes de dados externas e tabelas externas para uma variedade de fontes de dados, consulte Referência do PolyBase Transact-SQL.
Explore mais maneiras de usar e monitorar o PolyBase nos seguintes artigos:
Eventos
31 de mar., 23 - 2 de abr., 23
O maior evento de aprendizado de SQL, Fabric e Power BI. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $ 400.
Registre-se hoje mesmoTreinamento
Módulo
Introdução à virtualização de dados do SQL Server 2022 - Training
Saiba mais sobre a virtualização de dados, como usar o Polybase para acessar e consultar dados externos e recursos avançados do Polybase no SQL Server 2022.
Certificação
Microsoft Certified: Azure Data Engineer Associate - Certifications
Demonstre a compreensão das tarefas comuns de engenharia de dados para implementar e gerenciar cargas de trabalho de engenharia de dados no Microsoft Azure, usando vários serviços do Azure.
Documentação
CREATE EXTERNAL DATA SOURCE (Transact-SQL) - SQL Server
CREATE EXTERNAL DATA SOURCE cria uma fonte de dados externa usada para estabelecer a conectividade e a virtualização de dados de plataformas SQL Server e SQL do Azure.
Referência do Transact-SQL do PolyBase - SQL Server
Use o PolyBase para consultar seus dados externos no Hadoop, Armazenamento de Blobs do Azure, Azure Data Lake Store, SQL Server, Oracle, Teradata e MongoDB ou em arquivos CSV.
CREATE EXTERNAL TABLE (Transact-SQL) - SQL Server
CREATE EXTERNAL TABLE (Transact-SQL) cria uma tabela externa.