Daniel Calbimonte

SQL Server 2016 – Tutorial de PolyBase

February 28, 2017 by

Introducción

Este artículo le enseñará cómo instalar PolyBase y le mostrará un ejemplo simple para empezar.

PolyBase es una nueva característica en SQL Server 2016. Es usado para consultar bases de datos relacionales y no relacionales (NoSQL). Usted puede usar PolyBase para consultar tablas y archivos en Hdoop o en Azure Blob Storage. Usted también puede importar o exportar datos a/desde Hadoop.

En este ejemplo, mostraremos cómo consultar un archivo CSV almacenado en Azure Blob Storage desde SQL Server 2016 usando PolyBase.

Requerimientos

  1. Una subscripción a Azure Portal.
  2. SQL Server instalado.
  3. MASE instalado.
  4. SQL Server Management Studio (SSMS) instalado.

Iniciando

Primero mostraremos cómo instalar PolyBase y luego mostraremos un ejemplo en Azure para consultar un archive CSV desde SSMS 2016.

Instalación

PolyBase está incluido en el instalador de SQL Server 2016. Es una nueva característica. Cuando lo instale o cuando desee añadir esta característica, usted necesita seleccionar New SQL Server stand-alone installation or add feature to an existing installation:


Figura 0. Instalando o añadiendo nuevas características

Ejecute el instalador hasta Feature Selection y asegúrese de que PolyBase Query Service for External Data está seleccionado:


Figura 1. Característica seleccionada

Si no estaba instalado antes, la configuración le pedirá Oracle Java Runtime Environment 7. JR7 o superior es requerido porque PolyBase usa Java para conectarse a Hadoop:


Figura 2. Mensaje de error de JRE7

Usted puede descargar JRE en la página de Oracle JRE:
Server JRE (Java SE Runtime Environment) 8 Downloads

Descargue la versión Windows para su máquina con SQL Server:


Figura 3. Instaladores de JRE

Finalmente, para habilitar PolyBase, use la siguiente sentencia de configuración:

‘Show advanced option’ en 1 es usado para habilitar la opción avanzada, y la conectividad hadoop igual a 4 es usada para conectarse a Hadoop en Windows Servers.

Consultando un archivo csv en Azure

En este ejemplo, vamos a consultar un archivo csv que será subido a Azure. Consultaremos el archivo csv en nuestro SQL Server local usando PolyBase.

Creamos un archivo llamado customers.csv con el siguiente contenido:

Name,Lastname,email
john,Rambo,jrambo@hotmail.com
john,connor,jconnor@hotmail.com
elvis,presley,epresley@hotmail.com
elmer,hermosa,ehermosa@gmail.com

Es sólo un archivo con el nombre, el apellido y el correo electrónico de los clientes.

Si usted no tiene una cuenta Storage en Azure, vaya al Portal de Azure y añada una nueva cuenta de almacenamiento. En este ejemplo, el nombre de la cuenta de almacenamiento es polybasestoragesqlshack:


Figura 4. Cuenta Storage

Si usted necesita más información acerca de crear cuentas de almacenamiento en Azure, por favor lea nuestro artículo acerca de cuentas Storage.

Conéctese a su Subscripción Azure en MASE y haga clic derecho en Azure Account para crear un contenedor llamado mycontainer o cualquier nombre de su preferencia:


Figura 5. Contenedor Azure

Si usted necesita más explicaciones acerca de Blob, contenedores y subir archivos en Azure en MASE, por favor lea nuestro artículo acerca de subir archivos al almacenamiento Blob.

En el contenedor creado, suba el archivo customers.csv:


Figura 6. Subiendo archivos a Azure

Una vez que tenga el archivo en Azure, en su máquina local, abra SSMS y cree una nueva sentencia T-SQL en una base de datos:

Una clave maestra es una clave simétrica usada para proteger claves privadas.

El siguiente paso es crear una credencial. En este ejemplo, la credencial de base de datos es llamada mycredential, pero usted puede usar cualquier nombre. La identidad es credencial y puede ser también puede ser cualquier nombre. Secret es la llave para acceder a la Cuenta de Azure Storage:

Usted puede obtener la clave Secret que puede ser laclave primaria o secundaria en la Cuenta Azure. Usted puede copiar estas claves desde MASE:


Figura 7. Las claves primaria y secundaria en Azure Store

Luego crearemos los datos externos. Esto se conectará a nuestra Cuenta Azure:

Mycustomers es el nombre de la fuente de datos y puede ser cualquier nombre.

El tipo de los datos externos es Hadoop. Location es la localización del archivo almacenado. Mycontainer es el nombre del contenedor creado en la Figura 5 y polybasesstoragesqlshack es el nombre de la Cuenta de Azure Storage creada en el paso 4. Blob.core.windows.net es parte de la dirección del contenedor que puede ser recuperado en MASE:


Figura 8. La URL de almacenamiento blob

Un error típico cuando usted intenta crear datos externos es el siguiente:

OLE DB provider “SQLNCLI11” for linked server “(null)” returned message “Login timeout expired”.
OLE DB provider “SQLNCLI11” for linked server “(null)” returned message “A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.”.
Msg 10061, Level 16, State 1, Line 9
TCP Provider: No connection could be made because the target machine actively refused it.

Este error ocurre porque el Servicio del Motor de SQL Server PolyBase está deshabilitado. Asegúrese de que los Servicios de PolyBase están corriendo en SQL Server Configuration Manager o cualquier herramienta de su preferencia para manejar Servicios de Windows:


Figura 9. SQL Server PolyBase Services

En SSMS, usted podrá ver la fuente de datos externos en Database >External Resources>External Data Sources:


Figura 10. Fuente de Datos Externos creada

Tenemos acceso a los datos externos. En este caso, el archivo customer.csv. Necesitamos especificar el formato del archivo. Crearemos un formato para el archivo externo:

Es un archivo CSV, por lo que el delimitador es una coma. Si el formato del archivo externo está bien, usted lo verá SSMS, en Database>External Resources>External File Formats:


Figura 11. Formatos de archivos externos

Crearemos una tabla externa para consultar el archivo csv como una tabla SQL:

Usamos la sentencia para crear una tabla externa especificando un nombre de nuestra preferencia. Definimos los clientes del archivo y el tipo de datos como cualquier tabla en SQL Server.

LOCATION es la localización del archivo csv. Si el archivo customar.csv estuviera dentro de una carpeta llamada country y luego dentro una carpeta llamada city, la localización sería LOCATION=/country/city. En este ejemplo, el archivo está en la raíz porque no está dentro de ninguna carpeta en el contenedor.

DATA_SOURCE es la fuente de datos creada en la figura 10, y FILE_FORMAT es el formato creado en la figura 11.

Si todo está bien, usted podrá ver la tabla externa creada en SSMS en Database>Tables>External tables:


Figura 12. Tabla Externa creada

Ahora usted puede consultar el archivo csv como cualquier tabla usando T-SQL:

Usted podrá ver sus datos como si fuera una Tabla SQL Server:

Conclusión

En este artículo explicamos cómo instalar PolyBase y cómo consultar un archivo CSV almacenado en una cuenta Azure Storage.

Referencias

Para más información refiérase a estos enlaces:


Daniel Calbimonte

Daniel Calbimonte

Daniel Calbimonte es un Microsoft Most Valuable Professional, Microsoft Certified Trainer y Microsoft Certified IT Professional en SQL Server. He is an accomplished SSIS author, Intructor en academias de IT y tienedécadas de experience trabajando con diferentes bases de datos.

Realizó consultorias para empresas gubernamentales, empresas petroleras, sitios web, revistas y universidades alrededor del mundo. Daniel participa regularmente en conferencias de SQL Server y blogs. Escribe material sobre SQL Server y exámenes de certificación.

También realiza la traducción de artículos de SQLShack al español

Ver todas las publicaciones de Daniel Calbimonte
Daniel Calbimonte
4,289 Views