Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Windows üzerinde SQL Server
Azure SQL Yönetilen Örnek
Bu makale, Hadoop'ta harici verileri sorgulamak için SQL Server örneğinde PolyBase'in nasıl kullanılacağını açıklar.
Not
SQL Server 2022'den (16.x) başlayarak, Hadoop artık PolyBase'de desteklenmiyor.
Önkoşullar
- Eğer PolyBase kurulu değilse, PoliBase'i Windows'a Install bölümüne bakınız. Yükleme makalesinde önkoşullar açıklanmaktadır.
- PolyBase iki Hadoop sağlayıcısını destekler: Hortonworks Veri Platformu (HDP) ve Cloudera Dağıtılmış Hadoop (CDH). Hadoop, yeni sürümleri için "Major.Minor.Version" modelini takip eder ve desteklenen majör ve minör sürümlerdeki tüm sürümler desteklenir. Hortonworks Veri Platformu (HDP) ve Cloudera Dağıtılmış Hadoop (CDH) desteklenen sürümleri hakkında bilgi için PolyBase bağlantı yapılandırmasına bakınız.
Not
PolyBase, SQL Server 2016 SP1 CU7 ve SQL Server 2017 CU3 ile başlayan Hadoop şifreleme bölgelerini destekler. PolyBase ölçeklendirme grupları kullanıyorsanız, tüm hesaplama düğümlerinin Hadoop şifreleme bölgelerini destekleyen bir yapıda olması gerekir.
Hadoop bağlantısını yapılandırma
İlk olarak, SQL Server PolyBase'i belirli Hadoop sağlayıcınızı kullanacak şekilde yapılandırın.
sp_configure komutunu
hadoop connectivityile çalıştırın ve sağlayıcınız için bir değer ayarlayın. Sağlayıcınız için değeri bulmak için PolyBase bağlantı yapılandırmasına bakınız.-- 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; GOSQL Server'ı services.msc kullanarak yeniden başlatın. SQL Server'ı yeniden başlatmak şu hizmetleri de yeniden başlatır:
- SQL Server PolyBase Veri Taşıma Hizmeti
- SQL Server PolyBase Altyapısı
İtme hesaplamasını etkinleştirme
Sorgu performansını geliştirmek için Hadoop kümenize anında iletme hesaplamasını etkinleştirin:
SQL Server'ın yükleme yolunda yarn-site.xml dosyasını bulun. Genellikle yol şöyledir:
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf\Hadoop makinesinde, Hadoop yapılandırma dizininde benzer dosyayı bulun. dosyasında, yapılandırma anahtarının
yarn.application.classpathdeğerini bulun ve kopyalayın.SQL Server makinesindeki yarn-site.xml dosyasının içinde,yarn.application.classpath özelliğini bulun. Hadoop makinesindeki değeri değer öğesine yapıştırın.
Tüm CDH 5.x sürümleri için,
yarn-site.xmlyapılandırma parametrelerini yamapred-site.xmldosyanızın sonuna ya damapreduce.application.classpathdosyasına ekleyin. HortonWorks,yarn.application.classpathyapılandırmaları içinde bu yapılandırmaları içerir. Örneğin, Hadoop için PolyBase yapılandırması ve güvenliği bölümünü inceleyebilirsiniz.
Önemli
Hadoop ile hesaplamalı iş yükü aktarımı işlevini kullanabilmek için, hedef Hadoop kümesinin HDFS, YARN ve MapReduce'un temel bileşenlerine ve etkin durumda bir iş geçmişi sunucusuna sahip olması gerekir. PolyBase, MapReduce aracılığıyla anında iletme sorgusunu gönderir ve durumu iş geçmişi sunucusundan çeker. Bileşenlerden biri olmadan sorgu başarısız olur.
Dış tabloyu yapılandır
Hadoop veri kaynağınızdaki verileri sorgulamak için, Transact-SQL sorgularda kullanılacak bir dış tablo tanımlamanız gerekir. Aşağıdaki adımlarda dış tablonun nasıl yapılandırıldığı açıklanmaktadır.
Veritabanında bir ana anahtar oluşturun, eğer zaten yoksa. Bu anahtara kimlik bilgisi sırrını şifrelemek için ihtiyacınız var.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';PAROLA = <şifre>
Veritabanındaki ana anahtarı şifrelemek için kullanılan parola. Şifre, SQL Server örneğini barındıran bilgisayarın Windows şifre politikası gereksinimlerini karşılamalıdır.
Kerberos ile güvence altına alınmış Hadoop kümeleri için veritabanı kapsamlı bir kimlik bilgisi oluşturun.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1 WITH IDENTITY = '<kerberos_user_name>', SECRET = '<kerberos_password>';ile CREATE EXTERNAL DATA SOURCEbir dış veri kaynağı oluşturun.
-
LOCATION(Gerekli): Hadoop NameNode IP adresi ve bağlantı noktası. -
RESOURCE_MANAGER_LOCATION(İsteğe bağlı): Hadoop Resource Manager konumu, pushdown hesaplamayı etkinleştirmek için. -
CREDENTIAL(İsteğe bağlı): Önceden oluşturulmuş veritabanı kapsamlı kimlik bilgisi.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster WITH ( TYPE = HADOOP, LOCATION = 'hdfs://10.xxx.xx.xxx:xxxx', RESOURCE_MANAGER_LOCATION = '10.xxx.xx.xxx:xxxx', CREDENTIAL = HadoopUser1 );-
ile CREATE EXTERNAL FILE FORMATbir dış dosya biçimi oluşturun.
-
FORMAT_TYPE: Hadoop'taki format türü (DELIMITEDTEXT,RCFILE,ORC, veyaPARQUET).
CREATE EXTERNAL FILE FORMAT TextFileFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS (FIELD_TERMINATOR = '|', USE_TYPE_DEFAULT = TRUE) );-
ile CREATE EXTERNAL TABLEHadoop'ta depolanan verilere işaret eden bir dış tablo oluşturun. Bu örnekte, dış veriler araba sensörü verilerini içerir.
-
LOCATION: Veriyi içeren dosya veya dizine giden yol (HDFS köküne göre).
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 = MyHadoopCluster, LOCATION = '/Demo/', FILE_FORMAT = TextFileFormat );-
Dış tabloda istatistikler oluşturun.
CREATE STATISTICS StatsForSensors ON CarSensor_Data(CustomerKey, Speed);
PolyBase sorguları
PolyBase aşağıdaki senaryolar için uygundur:
- Dış tablolara yönelik ad hoc sorgular.
- Veri içe aktarılıyor.
- Veriler dışarı aktarıyor.
Aşağıdaki sorular, kurgusal araba sensörü verileriyle ilgili bir örnek sunar.
Geçici sorgular
Aşağıdaki ad hoc sorgu, ilişkisel verileri Hadoop verileriyle birleştirir. 35 mph'den daha hızlı sürüş yapan müşterileri seçerek SQL Server'da depolanan yapılandırılmış müşteri verilerini Hadoop'ta depolanan araç sensörü verileriyle birleştirir.
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)
Verileri içeri aktarma
Aşağıdaki sorgu dış verileri SQL Server'a aktarır. Bu örnek, daha ayrıntılı analiz yapmak için hızlı sürücülerin verilerini SQL Server'a aktarır. Performansı geliştirmek için örnek bir columnstore dizini kullanır.
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;
Verileri dışarı aktar
Aşağıdaki sorgu verileri SQL Server'dan Hadoop'a aktarır. Öncelikle, PolyBase dışa aktarmasını etkinleştirin. Ardından, verileri hedefe aktarmadan önce hedef için bir dış tablo oluşturun.
-- Enable INSERT into external table
EXECUTE 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 (
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;
SSMS'de PolyBase nesnelerini görüntüleme
SSMS'de dış tablolar, Dış Tablolar ayrı bir klasörde görüntülenir. Dış veri kaynakları ve dış dosya biçimleri, Dış Kaynaklaraltındaki alt klasörlerdedir.