Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server v systému Windows
Azure SQL Managed Instance
Tento článek vysvětluje, jak použít PolyBase na instanci SQL Server k dotazování externích dat v Hadoopu.
Poznámka
Od verze SQL Server 2022 (16.x) se v PolyBase už Hadoop nepodporuje.
Požadavky
- Pokud PolyBase není nainstalovaný, podívejte se na Install PolyBase na Windows. Článek o instalaci vysvětluje požadavky.
- Počínaje SQL Serverem 2019 (15.x) musíte také povolit funkci PolyBase.
- PolyBase podporuje dva poskytovatele Hadoopu, Hortonworks Data Platform (HDP) a Cloudera Distributed Hadoop (CDH). Hadoop následuje vzorec "Major.Minor.Version" pro své nové vydání a všechny verze v rámci podporovaného hlavního a vedlejšího vydání jsou podporovány. Pro informace o podporovaných verzích Hortonworks Data Platform (HDP) a Cloudera Distributed Hadoop (CDH) viz konfigurace konektivity PolyBase.
Poznámka
PolyBase podporuje zóny šifrování Hadoop počínaje SQL Serverem 2016 SP1 CU7 a SQL Serverem 2017 CU3. Pokud používáte skupiny horizontálního škálování PolyBase, všechny výpočetní uzly musí také používat verzi, která zahrnuje podporu pro šifrovací zóny Hadoopu.
Konfigurace připojení Hadoopu
Nejprve nakonfigurujte SQL Server PolyBase tak, aby používal konkrétního poskytovatele Hadoop.
Spusť sp_configure a
hadoop connectivitynastav hodnotu pro svého poskytovatele. Pro zjištění hodnoty pro vašeho poskytovatele viz konfigurace konektivity 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 EXECUTE sp_configure @configname = 'hadoop connectivity', @configvalue = 7; GO RECONFIGURE; GORestartujte SQL Server pomocí services.msc. Restartování SQL Server také restartuje tyto služby:
- Služba pro přesun dat SQL Server PolyBase
- SQL Server PolyBase Engine
Povolit počítání pushdown
Pokud chcete zvýšit výkon dotazů, povolte výpočetní propadání do clusteru Hadoop.
Vyhledejte soubor yarn-site.xml v instalační cestě SQL Serveru. Cesta je obvykle následující:
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf\Na počítači Hadoop najděte analogický soubor v konfiguračním adresáři Hadoop. V souboru vyhledejte a zkopírujte hodnotu konfiguračního klíče
yarn.application.classpath.Na počítači s SQL Serverem v souboru yarn-site.xml vyhledejte vlastnost yarn.application.classpath. Vložte hodnotu z počítače Hadoop do prvku value.
Pro všechny verze CDH 5.x přidejte
mapreduce.application.classpathkonfigurační parametry buď na konec souboruyarn-site.xml, nebo přímo do souborumapred-site.xml. HortonWorks zahrnuje tyto konfigurace vyarn.application.classpathrámci konfigurací. Příklady viz PolyBase konfigurace a bezpečnost pro Hadoop.
Důležitý
Aby bylo možné s Hadoopem použít funkci nabízení výpočtů, musí mít cílový cluster Hadoop základní komponenty HDFS, YARN a MapReduce s povoleným serverem historie úloh. PolyBase odešle dotaz pushdownu prostřednictvím MapReduce a načítá stav ze serveru historie úloh. Bez obou komponent dotaz selže.
Konfigurace externí tabulky
Pokud chcete dotazovat data ve zdroji dat Hadoop, musíte definovat externí tabulku, která se má použít v Transact-SQL dotazech. Následující kroky popisují, jak nakonfigurovat externí tabulku.
Vytvořte hlavní klíč v databázi, pokud ještě neexistuje. Tento klíč potřebuješ k zašifrování tajemství přihlašovacích údajů.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';PASSWORD = <password>
Heslo, které se používá k šifrování hlavního klíče v databázi. Heslo musí splňovat požadavky politiky hesel Windows počítače, který hostí instanci SQL Server.
Vytvořte přihlašovací údaje s vymezeným oborem databáze pro clustery Hadoop zabezpečené protokolem Kerberos.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1 WITH IDENTITY = '<kerberos_user_name>', SECRET = '<kerberos_password>';Vytvořte externí zdroj dat pomocí CREATE EXTERNAL DATA SOURCEpříkazu .
-
LOCATION(Povinné): IP adresa a port uzlu NameNode systému Hadoop. -
RESOURCE_MANAGER_LOCATION(Volitelné): Umístění správce prostředků Hadoop pro povolení výpočtů pushdown. -
CREDENTIAL(Volitelné): Databázové přihlašovací údaje, vytvořené dříve.
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 );-
Vytvořte formát externího souboru pomocí CREATE EXTERNAL FILE FORMATpříkazu .
-
FORMAT_TYPE: Typ formátu v Hadoopu (DELIMITEDTEXT,RCFILE, ,ORCneboPARQUET).
CREATE EXTERNAL FILE FORMAT TextFileFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS (FIELD_TERMINATOR = '|', USE_TYPE_DEFAULT = TRUE) );-
Vytvořte externí tabulku odkazující na data uložená v Hadoopu pomocí CREATE EXTERNAL TABLE. V tomto příkladu externí data obsahují data snímačů automobilů.
-
LOCATION: Cesta k souboru nebo adresáři, který obsahuje data (vzhledem ke kořeni HDFS).
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 );-
Vytvoření statistiky pro externí tabulku
CREATE STATISTICS StatsForSensors ON CarSensor_Data(CustomerKey, Speed);
Dotazy PolyBase
PolyBase je vhodný pro následující scénáře:
- Ad hoc dotazy na externí tabulky
- Importování dat.
- Export dat.
Následující dotazy poskytují příklad s fiktivními daty z automobilových senzorů.
Ad hoc dotazy
Následující ad hoc dotaz spojuje relační data s Hadoop daty. Vybere zákazníky, kteří jezdí rychleji než 35 mph a připojují strukturovaná zákaznická data uložená na SQL Serveru s daty snímačů aut uloženými v Hadoopu.
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)
Importovat data
Následující dotaz naimportuje externí data do SQL Serveru. Tento příklad importuje data pro rychlé řidiče do SQL Serveru, aby bylo možné provést podrobnější analýzu. Pro zvýšení výkonu se v ukázce používá index 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;
Exportovat data
Následující dotaz exportuje data z SQL Serveru do Hadoopu. Nejprve povolte export přes PolyBase. Potom před exportem dat do cíle vytvořte externí tabulku pro cíl.
-- 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;
Zobrazení objektů PolyBase v SSMS
V nástroji SSMS se externí tabulky zobrazují v samostatné složce externí tabulky. Externí zdroje dat a formáty externích souborů jsou v podsložkách v části Externí zdroje.
Související obsah
- Transact-SQL PolyBase
- Škálovací skupiny PolyBase
- Sledování a řešení potíží s PolyBase