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 2022 (16.x)
SQL Server 2022 (16.x) může virtualizovat data ze souborů parquet. Tento proces umožňuje, aby data zůstala v původním umístění, ale dají se dotazovat z instance SQL Serveru pomocí příkazů T-SQL, stejně jako jakékoli jiné tabulky. Tato funkce používá konektory PolyBase a minimalizuje potřebu procesů extrakce, transformace a načítání (ETL).
V následujícím příkladu virtualizujeme soubor parquet uložený v úložišti objektů kompatibilním s S3.
Další informace o virtualizaci dat najdete v tématu Úvod k virtualizaci dat pomocí PolyBase.
Požadavky
Pokud chcete používat funkce integrace úložiště objektů kompatibilní s S3, potřebujete následující nástroje a prostředky:
- Nainstalujte funkci PolyBase pro SQL Server.
- Nainstalujte SQL Server Management Studio (SSMS).
- Úložiště kompatibilní s S3.
- Vytvořil se kontejner S3. Kontejnery nelze vytvářet ani konfigurovat z SQL Serveru.
- Uživatel (
Access Key ID) a tajný kód (Secret Key ID) a tento uživatel je vám znám. K autentizaci v koncovém bodu úložiště objektů S3 budete potřebovat obojí. - Oprávnění ListBucket pro uživatele S3
- Oprávnění ReadOnly pro uživatele S3
- Musí být nakonfigurovaný protokol TLS. Předpokládá se, že všechna připojení budou bezpečně přenášena přes PROTOKOL HTTPS, nikoli PŘES PROTOKOL HTTP. Koncový bod bude ověřen certifikátem nainstalovaným na hostiteli operačního systému SQL Serveru.
Povolení
Aby mohl uživatel proxy serveru číst obsah kbelíku S3, musí mít uživatel povoleno provádět následující akce s koncovým bodem S3:
- ListBucket;
- Jen pro čtení;
Před konfigurací
- Povolení PolyBase v
sp_configure:
exec sp_configure @configname = 'polybase enabled', @configvalue = 1
;
RECONFIGURE
;
exec sp_configure @configname = 'polybase enabled'
;
- Před vytvořením přihlašovacích údajů s vymezeným oborem databáze musí mít uživatelská databáze hlavní klíč pro ochranu přihlašovacích údajů. Další informace naleznete v tématu CREATE MASTER KEY.
Vytvoření pověření v rámci konkrétní databáze
Následující ukázkový skript vytvoří přihlašovací údaje s3-dc s oborem databáze ve zdrojové uživatelské databázi na SQL Serveru. Další informace naleznete v tématu CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
IF NOT EXISTS(SELECT * FROM sys.credentials WHERE name = 's3_dc')
BEGIN
CREATE DATABASE SCOPED CREDENTIAL s3_dc
WITH IDENTITY = 'S3 Access Key',
SECRET = '<AccessKeyID>:<SecretKeyID>' ;
END
Ověřte nové přihlašovací údaje s oborem databáze pomocí sys.database_scoped_credentials (Transact-SQL):
SELECT * FROM sys.database_scoped_credentials;
Vytvoření externího zdroje dat
Následující ukázkový skript vytvoří externí zdroj dat s3_ds ve zdrojové uživatelské databázi na SQL Serveru. Externí zdroj dat odkazuje na přihlašovací údaje s3_dc databáze s vymezeným oborem. Další informace naleznete v tématu CREATE EXTERNAL DATA SOURCE.
CREATE EXTERNAL DATA SOURCE s3_ds
WITH
( LOCATION = 's3://<ip_address>:<port>/'
, CREDENTIAL = s3_dc
);
GO
Ověřte nový externí zdroj dat pomocí sys.external_data_sources.
SELECT * FROM sys.external_data_sources;
Virtuální hostované adresy URL
Některé systémy úložiště kompatibilní se S3 (například Amazon Web Services) využívají k implementaci struktury složek v kontejneru S3 adresy URL stylu virtual_hosted. Přidejte následující CONNECTION_OPTIONS, aby bylo možné vytvářet externí tabulky odkazující na umístění složek v kontejneru S3, například CONNECTION_OPTIONS = '{"s3":{"url_style":"virtual_hosted"}}'.
Bez tohoto nastavení CONNECTION_OPTIONS se při dotazování externích tabulek odkazujících na složku může zobrazit následující chyba:
Msg 13807, Level 16, State 1, Line 23
Content of directory on path '/<folder_name>/' cannot be listed.
SELECT ze souboru formátu Parquet pomocí OPENROWSET
Následující příklad ukazuje použití T-SQL k dotazování souboru parquet uloženého v úložišti objektů kompatibilním s S3 prostřednictvím dotazu OPENROWSET. Další informace naleznete v tématu OPENROWSET (Transact-SQL).
Vzhledem k tomu, že se jedná o soubor parquet, probíhají automaticky dvě důležité věci:
- SQL Server načte schéma ze samotného souboru, takže není nutné definovat tabulky, sloupce nebo datové typy.
- Není nutné deklarovat typ komprese pro čtení souboru.
SELECT *
FROM OPENROWSET
( BULK '/<bucket>/<parquet_folder>'
, FORMAT = 'PARQUET'
, DATA_SOURCE = 's3_ds'
) AS [cc];
Dotazování úložiště objektů kompatibilních s S3 prostřednictvím externí tabulky
Následující příklad ukazuje použití T-SQL k dotazování souboru parquet uloženého v úložišti objektů kompatibilním s S3 prostřednictvím dotazování externí tabulky. Ukázka používá relativní cestu v rámci externího zdroje dat.
CREATE EXTERNAL FILE FORMAT ParquetFileFormat WITH(FORMAT_TYPE = PARQUET);
GO
CREATE EXTERNAL TABLE Region (
r_regionkey BIGINT,
r_name CHAR(25),
r_comment VARCHAR(152) )
WITH (LOCATION = '/region/', DATA_SOURCE = 's3_ds',
FILE_FORMAT = ParquetFileFormat);
GO
SELECT * FROM [Region];
Další informace najdete tady:
Omezení
- Dotazy SQL Serveru na externí tabulku zazálohované úložištěm kompatibilním s S3 jsou omezené na 1 000 objektů na předponu. Důvodem je to, že výpis objektů kompatibilní s S3 je omezený na 1 000 klíčů objektů na předponu.
- V případě úložiště objektů kompatibilních s S3 nemají zákazníci oprávnění vytvářet id přístupového klíče s znakem
:v něm. - Celková délka adresy URL je omezená na 259 znaků. To znamená, že
s3://<hostname>/<objectkey>nesmí překročit 259 znaků. Počítá ses3://do tohoto limitu, takže délka cesty nesmí překročit 254 znaků (259–5). - Název přihlašovacích údajů SQL je omezený 128 znaky ve formátu UTF-16.
- Vytvořený název přihlašovacích údajů musí obsahovat název kontejneru, pokud se nejedná o nový externí zdroj dat.
- ID přístupového klíče a ID tajného klíče musí obsahovat pouze alfanumerické hodnoty.
Další kroky
- Další informace o PolyBase najdete v tématu Přehled SQL Serveru PolyBase
- Konfigurace PolyBase pro přístup k externím datům v úložišti objektů kompatibilním s S3