Introduzione a PolyBaseGet started with PolyBase

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2016)noDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

In questo argomento contiene le nozioni di base sull'esecuzione di PolyBase in un'istanza di SQL Server.This topic contains the basics about running PolyBase on a SQL Server instance.

La procedura seguente consente di:After running the steps below, you will have:

  • Installare ed eseguire PolyBase sul serverPolyBase installed and runnable on your server

  • Reperire esempi di istruzioni per la creazione di oggetti PolyBaseExamples of statements that create PolyBase objects

  • Comprendere in che modo gestire gli oggetti PolyBase in SQL Server Management Studio (SSMS)An understanding of how to manage PolyBase objects in SQL Server Management Studio (SSMS)

  • Reperire esempi di query con oggetti PolyBaseExamples of queries using PolyBase objects

PrerequisitiPrerequisites


Un'istanza di SQL Server (64 bit) con quanto segue:An instance of SQL Server (64-bit) with the following:

  • Microsoft .NET Framework 4.5.Microsoft .NET Framework 4.5.

  • Oracle Java SE RunTime Environment (JRE) versione 7.51 o versione successiva (64 bit).Oracle Java SE RunTime Environment (JRE) version 7.51 or higher (64-bit). Funzionano sia JRE che Server JRE .(Either JRE or Server JRE will work). Passare a Java SE downloads(Download di Java SE).Go to Java SE downloads. Il programma di installazione avrà esito negativo se JRE non è presente.The installer will fail if JRE is not present.

  • Memoria minima: 4 GBMinimum memory: 4 GB

  • Spazio su disco rigido minimo: 2 GBMinimum hard disk space: 2 GB

  • La connettività TCP/IP deve essere abilitata.TCP/IP connectivity must be enabled. Vedere Abilitare o disabilitare un protocollo di rete del server. TCP/IP è disabilitato per impostazione predefinita in SQL Server Developer Edition e SQL Server Express Edition.(See Enable or Disable a Server Network Protocol.) SQL Server Developer and Express editions have TCP/IP disabled by default. PolyBase può essere installato ma non verrà avviato completamente fino a quando non si abilita TCP/IP.PolyBase can be installed but will not fully start until TCP/IP is enabled. È necessario abilitare manualmente TCP/IP per avere a disposizione la funzionalità PolyBase.You must manually enable TCP/IP to have PolyBase functionality.

Un'origine dati esterna può essere:An external data source, one of the following:

Nota

Se si prevede di usare la funzionalità di distribuzione di calcolo su Hadoop, è necessario assicurarsi che il cluster Hadoop di destinazione disponga dei componenti principali di HDFS, Yarn/MapReduce con server Jobhistory abilitato.If you are going to use the computation pushdown functionality against Hadoop, you will need to ensure that the target Hadoop cluster has core components of HDFS, Yarn/MapReduce with Jobhistory server enabled. PolyBase invia la query di distribuzione tramite MapReduce e recupera lo stato dal server JobHistory.PolyBase submits the pushdown query via MapReduce and pulls status from the JobHistory Server. La query riuscirà senza uno dei due componenti.Without either component the query will fail.

Installare PolyBaseInstall PolyBase


Se non è stato installato PolyBase, vedere l'installazione di PolyBase.If you haven't installed PolyBase, see PolyBase installation.

Procedura per confermare l'installazioneHow to confirm installation


Dopo l'installazione, eseguire il comando seguente per verificare che PolyBase sia stato installato correttamente.After installation, run the following command to confirm that PolyBase has been successfully installed. Se installato, PolyBase restituisce 1; in caso contrario, restituisce 0.If PolyBase is installed, returns 1; otherwise, 0.

SELECT SERVERPROPERTY ('IsPolybaseInstalled') AS IsPolybaseInstalled;  

Configure PolyBase Configure PolyBase

Dopo l'installazione, è necessario configurare SQL Server per utilizzare la versione Hadoop o archiviazione Blob di Azure.After installing, you must configure SQL Server to use either your Hadoop version or Azure Blob Storage. PolyBase supporta due provider di Hadoop, Hortonworks Data Platform (HDP) e Cloudera Distributed Hadoop (CDH).PolyBase supports two Hadoop providers, Hortonworks Data Platform (HDP) and Cloudera Distributed Hadoop (CDH). Le origini dati esterne supportate includono:The supported external data sources include:

  • Hortonworks HDP 1.3 su Linux/Windows ServerHortonworks HDP 1.3 on Linux/Windows Server

  • Hortonworks HDP 2.1: 2.6 su LinuxHortonworks HDP 2.1 – 2.6 on Linux

  • Hortonworks HDP 2.1 - 2.3 su Windows ServerHortonworks HDP 2.1 - 2.3 on Windows Server

  • Cloudera CDH 4.3 su LinuxCloudera CDH 4.3 on Linux

  • Cloudera CDH 5.1 – 5.5, 5.9-5.11 su LinuxCloudera CDH 5.1 – 5.5, 5.9 - 5.11 on Linux

  • Archiviazione BLOB AzureAzure Blob Storage

Nota

La connettività ad Azure Data Lake Store è supportata solo in Azure SQL Data Warehouse.Azure Data Lake Store connectivity is only supported in Azure SQL Data Warehouse.

Configurazione con origine dati esternaExternal data source configuration

  1. Eseguire sp_configure (Transact-SQL) 'hadoop connectivity' e impostare il valore appropriato.Run sp_configure (Transact-SQL) ‘hadoop connectivity’ and set an appropriate value. Per impostazione predefinita, l'opzione hadoop connectivity è impostata su 7.By Default, the hadoop connectivity is set to 7. Per trovare il valore, vedere Configurazione della connettività di PolyBase (Transact-SQL).To find the value, see PolyBase Connectivity Configuration (Transact-SQL).

    -- Values map to various external data sources.  
    -- Example: value 7 stands for Azure blob storage and Hortonworks HDP 2.3 on Linux.  
    sp_configure @configname = 'hadoop connectivity', @configvalue = 7;   
    GO   
    
    RECONFIGURE   
    GO   
    
  2. È necessario riavviare SQL Server mediante services.msc.You must restart SQL Server using services.msc. Il riavvio di SQL Server comporta il riavvio di questi servizi:Restarting SQL Server restarts these services:

    • Servizio spostamento dati di PolyBase per SQL ServerSQL Server PolyBase Data Movement Service

    • Motore di PolyBase per SQL ServerSQL Server PolyBase Engine

    arrestare e avviare i servizi PolyBase in services.mscstop and start PolyBase services in services.msc

Configurazione della distribuzionePushdown configuration


Per migliorare le prestazioni delle query, abilitare il calcolo della distribuzione in un cluster Hadoop:To improve query performance, enable pushdown computation to a Hadoop cluster:

  1. Trovare il file yarn-site.xml nel percorso di installazione di SQL Server.Find the file yarn-site.xml in the installation path of SQL Server. In genere il percorso è:Typically, the path is:

    
    C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLBinnPolybaseHadoopconf  
    
  2. Nel computer Hadoop trovare il file analogo nella directory di configurazione Hadoop.On the Hadoop machine, find the analogous file in the Hadoop configuration directory. Nel file trovare e copiare il valore della chiave di configurazione yarn.application.classpath.In the file, find and copy the value of the configuration key yarn.application.classpath.

  3. Nel computer SQL Server, nel file yarn.site.xml, trovare la proprietà yarn.application.classpath .On the SQL Server machine, in the yarn.site.xml file, find the yarn.application.classpath property. Incollare il valore dal computer Hadoop nell'elemento valore.Paste the value from the Hadoop machine into the value element.

  4. Per tutte le versioni di CDH 5.X sarà necessario aggiungere i parametri di configurazione mapreduce.application.classpath alla fine del file yarn.site.xml o nel file mapred-site.xml.For all CDH 5.X versions, you will need to add the mapreduce.application.classpath configuration parameters either to the end of your yarn.site.xml file or into the mapred-site.xml file. HortonWorks include queste configurazioni all'interno delle configurazioni yarn.application.classpath.HortonWorks includes these configurations within the yarn.application.classpath configurations. Vedere Configurazione di PolyBase per alcuni esempi.See PolyBase configuration for examples.

Scalabilità orizzontale di PolyBaseScale out PolyBase


La funzionalità gruppo di PolyBase consente di creare un cluster di istanze di SQL Server per elaborare grandi quantità di set di dati da origini dati esterne in un meccanismo di scalabilità orizzontale che consente di migliorare le prestazioni delle query.The PolyBase group feature allows you to create a cluster of SQL Server instances to process large data sets from external data sources in a scale-out fashion for better query performance.

  1. Installare SQL Server con PolyBase in più computer.Install SQL Server with PolyBase on multiple machines.

  2. Selezionare un server SQL Server come nodo head.Select one SQL Server as head node.

  3. Aggiungere altre istanze come nodi di calcolo eseguendo sp_polybase_join_group.Add other instances as compute nodes by running sp_polybase_join_group.

    -- Enter head node details:   
    -- head node machine name, head node dms control channel port, head node sql server name  
    EXEC sp_polybase_join_group 'PQTH4A-CMP01', 16450, 'MSSQLSERVER';  
    
  4. Riavviare il servizio PolyBase Data Movement Service sui nodi di calcolo.Restart the PolyBase Data Movement Service on the compute nodes.

    Per informazioni dettagliate, vedere Gruppi con scalabilità orizzontale di PolyBase.For details, see PolyBase scale-out groups.

Creare oggetti T-SQLCreate T-SQL objects


Creare gli oggetti a seconda dell'origine dati esterna, ovvero Hadoop o il servizio di archiviazione di Azure.Create objects depending on the external data source, either Hadoop or Azure Storage.

HadoopHadoop

-- 1: Create a database scoped credential.  
-- Create a master key on the database. This is required to encrypt the credential secret.  

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo';  

-- 2: Create a database scoped credential  for Kerberos-secured Hadoop clusters.  
-- IDENTITY: the Kerberos user name.  
-- SECRET: the Kerberos password  

CREATE DATABASE SCOPED CREDENTIAL HadoopUser1   
WITH IDENTITY = '<hadoop_user_name>', Secret = '<hadoop_password>';  

-- 3:  Create an external data source.  
-- 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        
);  

-- 4: Create an external file format.  
-- 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)  

-- 5:  Create an external table pointing to data stored in Hadoop.  
-- 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  
);  

-- 6:  Create statistics on an external table.   
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)  

Archiviazione BLOB AzureAzure Blob Storage

--1: Create a master key on the database.  
-- Required to encrypt the credential secret.  

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo';  

-- Create a database scoped credential  for Azure blob storage.  
-- IDENTITY: any string (this is not used for authentication to Azure storage).  
-- SECRET: your Azure storage account key.  

CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential   
WITH IDENTITY = 'user', Secret = '<azure_storage_account_key>';  

--2:  Create an external data source.  
-- LOCATION:  Azure account storage account name and blob container name.  
-- CREDENTIAL: The database scoped credential created above.  

CREATE EXTERNAL DATA SOURCE AzureStorage with (  
        TYPE = HADOOP,   
        LOCATION ='wasbs://<blob_container_name>@<azure_storage_account_name>.blob.core.windows.net',  
        CREDENTIAL = AzureStorageCredential  
);  

--3:  Create an external file format.  
-- 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)  

--4: Create an external table.  
-- The external table points to data stored in Azure storage.  
-- LOCATION: path to a file or directory that contains the data (relative to the blob container).  
-- To point to all files under the blob container, use LOCATION='/'   

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 = AzureStorage,  
        FILE_FORMAT = TextFileFormat  
);  

--5: Create statistics on an external table.   
CREATE STATISTICS StatsForSensors on CarSensor_Data(CustomerKey, Speed)  

Query PolyBasePolyBase queries


PolyBase è adatto per assolvere a una triplice funzione:There are three functions that PolyBase is suited for:

  • esecuzione di query ad hoc su tabelle esternead-hoc queries against external tables.

  • importazione di dati.importing data.

  • esportazione di dati.exporting data.

Esempi di queryQuery examples

  • Query ad hocAd-hoc queries

    -- PolyBase Scenario 1: Ad-Hoc Query joining relational with Hadoop data   
    -- Select customers who drive faster than 35 mph: joining structured customer data stored   
    -- in SQL Server with car sensor data stored in Hadoop.  
    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)  
    
  • Importazione di datiImporting data

    -- PolyBase Scenario 2: Import external data into SQL Server.  
    -- Import data for fast drivers into SQL Server to do more in-depth analysis and  
    -- leverage Columnstore technology.  
    
    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;  
    
  • Esportazione di datiExporting data

    -- PolyBase Scenario 3: Export data from SQL Server to Hadoop.  
    
    -- 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;  
    

Gestione di oggetti PolyBase in SQL Server Management StudioManaging PolyBase objects in SSMS


In SQL Server Management Studio, le tabelle esterne vengono visualizzate in una cartella separata Tabelle esterne.In SSMS, external tables are displayed in a separate folder External Tables. Le origini dati esterne e i formati di file esterni si trovano nelle sottocartelle in External Resources.External data sources and external file formats are in subfolders under External Resources.

Oggetti PolyBase in SSMSPolyBase objects in SSMS

Risoluzione dei problemiTroubleshooting


Usare le DMV per risolvere i problemi relativi alle prestazioni e alle query.Use DMVs to troubleshoot performance and queries. Per informazioni dettagliate, vedere Risoluzione dei problemi di PolyBase.For details, see PolyBase troubleshooting.

Dopo l'aggiornamento da SQL Server 2016 RC1 a RC2 o RC3, le query potrebbero non riuscire.After upgrading from SQL Server 2016 RC1 to RC2 or RC3, queries may fail. Per informazioni dettagliate e una soluzione, vedere Note sulla versione di SQL Server 2016 e cercare "PolyBase".For details and a remedy, see SQL Server 2016 Release Notes and search for "PolyBase."

Passaggi successiviNext steps


Per comprendere la funzionalità di scalabilità orizzontale, vedere Gruppi con scalabilità orizzontale di PolyBase.To understand the scale-out feature, see PolyBase scale-out groups. Per monitorare PolyBase, vedere Risoluzione dei problemi di PolyBase.To monitor PolyBase, see PolyBase troubleshooting. Per informazioni sulla risoluzione dei problemi relativi alle prestazioni di PolyBase, vedere PolyBase troubleshooting with dynamic management views (Risoluzione dei problemi di PolyBase con DMV).To troubleshoot PolyBase performance, see PolyBase troubleshooting with dynamic management views.

Vedere ancheSee Also


Guida a PolyBase PolyBase Guide
Gruppi con scalabilità orizzontale di PolyBase PolyBase scale-out groups
Stored procedure di PolyBase PolyBase stored procedures
CREATE EXTERNAL DATA SOURCE (Transact-SQL) CREATE EXTERNAL DATA SOURCE (Transact-SQL)
CREATE EXTERNAL FILE FORMAT (Transact-SQL) CREATE EXTERNAL FILE FORMAT (Transact-SQL)
CREATE EXTERNAL TABLE (Transact-SQL)CREATE EXTERNAL TABLE (Transact-SQL)