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
Azure SQL Yönetilen Örneği üzerinde SQLServer
Makalede Hadoop'taki dış verileri sorgulamak için SQL Server örneğinde PolyBase'in nasıl kullanılacağı açıklanmaktadır.
Not
SQL Server 2022'den (16.x) başlayarak, Hadoop artık PolyBase'de desteklenmiyor.
Önkoşullar
- PolyBase'i yüklemediyseniz bkz. PolyBase yükleme. 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" desenini izler ve desteklenen Bir Birincil ve İkincil sürümdeki tüm sürümler desteklenir. Desteklenen Hortonworks Veri Platformu (HDP) ve Cloudera Dağıtılmış Hadoop (CDH) sürümleri hakkında bilgi için bkz. PolyBase Bağlantı Yapılandırması.
Not
PolyBase, SQL Server 2016 SP1 CU7 ve SQL Server 2017 CU3 ile başlayan Hadoop şifreleme bölgelerini destekler. PolyBase ölçeği genişletme gruplarınıkullanıyorsanız, tüm işlem düğümleri de Hadoop şifreleme bölgeleri için destek içeren bir yapıda olmalıdır.
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.
'hadoop bağlantısı' ile sp_configure çalıştırın ve sağlayıcınız için uygun bir değer ayarlayın. Sağlayıcınızın değerini bulmak için bkz. PolyBase Bağlantı Yapılandırması.
-- 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 GOservices.msckullanarak SQL Server'ın yeniden başlatılması gerekir. SQL Server'ın yeniden başlatılması şu hizmetleri 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 yarn.application.classpath yapılandırma anahtarının değ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 mapreduce.application.classpath yapılandırma parametrelerini yarn-site.xml dosyanızın sonuna veya mapred-site.xml dosyasına eklemeniz gerekir. HortonWorks, yarn.application.classpath yapılandırmaları içinde bu yapılandırmaları içerir. Örnekler için PolyBase yapılandırma bölümüne bakın.
Önemli
Hadoop ile hesaplama itme işlevini kullanmak için, hedef Hadoop kümesinin, iş geçmişi sunucusunun etkin olduğu HDFS, YARN ve MapReduce'un temel bileşenlerine 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.
Henüz yoksa veritabanında bir ana anahtar oluşturun. Kimlik bilgilerinin sırrını şifrelemek için bu gereklidir.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';Tartışmalar
ŞİFRE ='şifre'
Veritabanındaki ana anahtarı şifrelemek için kullanılan paroladır. parola, SQL Server örneğini barındıran bilgisayarın Windows parola ilkesi 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.
-- IDENTITY: the Kerberos user name. -- SECRET: the Kerberos password CREATE DATABASE SCOPED CREDENTIAL HadoopUser1 WITH IDENTITY = '<hadoop_user_name>', Secret = '<hadoop_password>';CREATE EXTERNAL DATA SOURCEile bir dış veri kaynağı oluşturun.
-- LOCATION (Required) : Hadoop Name Node IP address and port. -- RESOURCE MANAGER LOCATION (Optional): Hadoop Resource Manager location to enable pushdown computation. -- CREDENTIAL (Optional): the database scoped credential, created above. 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 );CREATE EXTERNAL FILE FORMATile bir dış dosya biçimi oluşturun.
-- 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))Hadoop'ta saklanan verilere işaret eden bir dış tablo oluşturmak için CREATE EXTERNAL TABLE komutunu kullanın. Bu örnekte, dış veriler araba sensörü verilerini içerir.
-- 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 = MyHadoopCluster, FILE_FORMAT = TextFileFormat );Dış tabloda istatistikler oluşturun.
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)
PolyBase sorguları
PolyBase'in uygun olduğu üç işlev vardır:
- Dış tablolara yönelik ad hoc sorgular.
- Veri içe aktarılıyor.
- Veriler dışarı aktarıyor.
Aşağıdaki sorgular, kurgusal araba algılayıcısı verileriyle örnek sağlar.
Geçici sorgular
Aşağıdaki geçici 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ı aktarma
Aşağıdaki sorgu verileri SQL Server'dan Hadoop'a aktarır. Bunu yapmak için önce PolyBase dışarı aktarmayı etkinleştirmeniz gerekir. Ardından, verileri hedefe aktarmadan önce hedef için bir dış tablo oluşturun.
-- 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;
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.
SSMS'de 
Sonraki adımlar
Dış veri kaynakları ve çeşitli veri kaynaklarına dış tablolar oluşturma hakkında daha fazla öğretici için bkz. PolyBase Transact-SQL başvurusu.
Aşağıdaki makalelerde PolyBase'i kullanmanın ve izlemenin diğer yollarını keşfedin: