Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:Windows rendszeren futó SQL Server
Azure SQL felügyelt példány
Ez a cikk elmagyarázza, hogyan lehet a PolyBase-et használni egy SQL Server példányon, hogy külső adatokat lekérdezzünk a Hadoopban.
Jegyzet
Az SQL Server 2022-től kezdve (16.x) a Hadoop már nem támogatott a PolyBase-ben.
Előfeltételek
- Ha a PolyBase nincs telepítve, nézd meg a PolyBase telepítését Windows-ra. A telepítési cikk ismerteti az előfeltételeket.
- Az SQL Server 2019 (15.x)-től kezdődően engedélyeznie kell a PolyBase funkciót.
- A PolyBase két Hadoop-szolgáltatót támogat, a Hortonworks Data Platformot (HDP) és a Cloudera Distributed Hadoopot (CDH). A Hadoop az új kiadásainál a "Major.Minor.Version" mintát követi, és minden támogatott nagy és kisebb kiadásban lévő verzió támogatott. A Hortonworks Data Platform (HDP) és a Cloudera Distributed Hadoop (CDH) támogatott verzióiról információért lásd: PolyBase connectivity configuration.
Jegyzet
A PolyBase az SQL Server 2016 SP1 CU7 és az SQL Server 2017 CU3-tól kezdve támogatja a Hadoop-titkosítási zónákat. Ha PolyBase skálázható csoportokat használsz, minden számítási csomópontnak olyan builden kell lennie, amely támogatja a Hadoop titkosítási zónákat.
Hadoop-kapcsolat konfigurálása
Először konfigurálja az SQL Server PolyBase-t az adott Hadoop-szolgáltató használatára.
Futtasd a sp_configure parancsot a(z)
hadoop connectivityhasználatával, és állíts be egy értéket a szolgáltatód számára. A szolgáltatód értékének megtalálásához lásd a PolyBase csatlakozási konfigurációt.-- 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; GOIndítsd újra az SQL Server-t a services.msc használatával. Az SQL Server újraindítása ezeket a szolgáltatásokat is újraindítja:
- SQL Server PolyBase adatáthelyezési szolgáltatás
- SQL Server PolyBase-motor
Leküldéses számítások engedélyezése
A lekérdezési teljesítmény javítása érdekében engedélyezze a leküldéses számítást a Hadoop-fürtön:
Keresse meg a yarn-site.xml fájlt az SQL Server telepítési útvonalán. Az elérési út általában a következő:
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\PolyBase\Hadoop\conf\A Hadoop gépen keresse meg az analóg fájlt a Hadoop konfigurációs könyvtárában. A fájlban keresse meg és másolja ki a konfigurációs kulcs
yarn.application.classpathértékét.Az SQL Server-gépen a yarn-site.xml fájlban keresse meg a yarn.application.classpath tulajdonságot. Illessze be a Hadoop gép értékét az érték eleme közé.
Minden CDH 5.x verziónál add hozzá a
mapreduce.application.classpathkonfigurációs paramétereket a fájl végéreyarn-site.xml, vagy amapred-site.xmlfájlba. A HortonWorks ezeket a konfigurációkat ayarn.application.classpathkonfigurációkon belül tartalmazza. Példák: PolyBase konfiguráció és biztonság a Hadoop számára.
Fontos
Ha a számítási leküldéses funkciót a Hadooptal szeretné használni, a cél Hadoop-fürtnek rendelkeznie kell a HDFS, YARN és MapReduce alapvető összetevőivel, és engedélyezve van a feladatelőzmény-kiszolgáló. A PolyBase a MapReduce-on keresztül küldi el az átfuttatott lekérdezést, és lekéri az állapotot a feladattörténet-kiszolgálóról. Bármelyik összetevő nélkül a lekérdezés meghiúsul.
Külső tábla konfigurálása
A Hadoop-adatforrásban lévő adatok lekérdezéséhez meg kell adnia egy külső táblát, amelyet Transact-SQL lekérdezésekben kell használni. Az alábbi lépések a külső tábla konfigurálását ismertetik.
Hozz létre egy mesterkulcsot az adatbázison, ha még nincs ilyen. Erre a kulcsra van szükséged a hitelesítés titkának titkosításához.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';JELSZÓ = <jelszó>
Az adatbázis főkulcsának titkosításához használt jelszó. A jelszónak megfelelnie kell annak a Windows-jelszó-szabályzatnak követelményeinek, amelyen az SQL Server példányát üzemelteti.
Hozzon létre egy adatbázis-hatókörű hitelesítő adatot a Kerberos által védett Hadoop-fürtökhöz.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1 WITH IDENTITY = '<kerberos_user_name>', SECRET = '<kerberos_password>';Hozzon létre egy külső adatforrást a .CREATE EXTERNAL DATA SOURCE
-
LOCATION(Szükséges): Hadoop név csomópont IP-címe és portja. -
RESOURCE_MANAGER_LOCATION(Opcionális): Hadoop Resource Manager helye a pushdown számítás engedélyezéséhez. -
CREDENTIAL(Opcionális): Az adatbázis által meghatározott képesítés, amelyet korábban hoztak létre.
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 );-
Hozzon létre egy külső fájlformátumot a(z) CREATE EXTERNAL FILE FORMAT használatával.
-
FORMAT_TYPE: A Hadoop formátum típusa (DELIMITEDTEXT,RCFILE,ORC, vagyPARQUET).
CREATE EXTERNAL FILE FORMAT TextFileFormat WITH ( FORMAT_TYPE = DELIMITEDTEXT, FORMAT_OPTIONS (FIELD_TERMINATOR = '|', USE_TYPE_DEFAULT = TRUE) );-
Hozzon létre egy külső táblát, amely a Hadoopban tárolt adatokra mutat a következővel CREATE EXTERNAL TABLE: . Ebben a példában a külső adatok autóérzékelő adatokat tartalmaznak.
-
LOCATION: Az út a fájlhoz vagy könyvtárhoz, amely tartalmazza az adatokat (a HDFS gyökérhez képest).
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 );-
Statisztikák létrehozása külső táblán.
CREATE STATISTICS StatsForSensors ON CarSensor_Data(CustomerKey, Speed);
PolyBase-lekérdezések
A PolyBase a következő helyzetekre alkalmas:
- Alkalmi lekérdezések külső táblák ellen.
- Adatok importálása.
- Adatok exportálása.
Az alábbi lekérdezések példát adnak fiktív autószenzori adatokkal.
Alkalmi lekérdezések
A következő ad hoc lekérdezés összekapcsolja a relációs adatokat a Hadoop adatokkal. Kiválasztja azokat az ügyfeleket, akik 35 mph-nál gyorsabban hajtanak, és az SQL Serverben tárolt strukturált ügyféladatokat összekapcsolják a Hadoopban tárolt autóérzékelő adataival.
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)
Adatok importálása
Az alábbi lekérdezés külső adatokat importál az SQL Serverbe. Ez a példa a gyors illesztőprogramok adatait importálja az SQL Serverbe, hogy részletesebb elemzést végezhessenek. A teljesítmény javítása érdekében a minta egy oszlopcentrikus indexet használ.
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;
Adatexportálás
Az alábbi lekérdezés adatokat exportál az SQL Serverről a Hadoopba. Először is engedélyezd a PolyBase exportot. Ezután hozzon létre egy külső táblát a célhelyhez az adatok exportálása előtt.
-- 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;
PolyBase-objektumok megtekintése az SSMS-ben
Az SSMS-ben a külső táblák külön mappában jelennek meg, Külső táblák. A külső adatforrások és a külső fájlformátumok a külső erőforrások almappáiban találhatók.
Kapcsolódó tartalom
- PolyBase Transact-SQL referencia
- PolyBase vertikális felskálázási csoportok
- PolyBase- monitorozása és hibaelhárítása