Sin categoría

Lago de datos: Todo lo que necesita saber

encontrar abundante información en un lago de datos

¿Qué es un lago de datos?

Un lago de datos se utiliza para almacenar y procesar datos estructurados o semiestructurados en su formato nativo. Las empresas crean y reciben grandes volúmenes de datos que puede almacenar con total fidelidad en un lago de datos para su análisis.

¿Por qué utilizar un lago de datos?

Las empresas necesitan un lugar central para almacenar todos los datos potencialmente valiosos recopilados por los sistemas operativos, los weblogs y los sistemas de borde. Un lago de datos complementa a los almacenes de datos que se utilizan para dar soporte a los informes periódicos. Un lago de datos tiene un alcance más amplio al proporcionar un repositorio para los datos utilizados con poca frecuencia o para apoyar proyectos poco frecuentes, como auditorías y exploración de nuevas iniciativas empresariales.

Gestionar una base de datos extensa puede ser todo un reto, por lo que grandes cantidades de datos están fácilmente disponibles en un almacén en la nube como Amazon S3.

No todos los formatos de datos tienen cabida en un sistema de gestión de bases de datos relacionales. Por lo tanto, un lago de datos proporciona un repositorio para todos los formatos de datos en un único sistema de archivos o almacén en la nube. Actian Data Platform proporciona una interfaz estándar basada en SQL para un lago de datos que utiliza extensiones que permiten acceder a datos externos mediante las mismas API que se utilizan para las tablas almacenadas internamente.

Características del lago de datos

Los siguientes atributos pueden caracterizar los lagos de datos:

  • Para almacenar datos estructurados, semiestructurados y no estructurados.
  • Puede centralizarse en un único sistema de archivos o en una plataforma de almacenamiento en la nube.
  • Para denominarse lago de datos, deben almacenar grandes cantidades de datos, a partir de 100 terabytes.
  • A menudo utiliza la interfaz HDFS, HBASE o Spark.
  • Se puede acceder a ella utilizando las extensiones de Spark mediante gestion des données como Actian Data Platform.
  • Simplifican la gestion des données.
  • Prepárese para incorporar la Inteligencia Artificial y el Aprendizaje Automático.
  • Aceleran los proyectos de análisis.
  • Mejoran la seguridad y la gouvernance.

Arquitectura de lagos de datos

Los lagos de datos suelen ser grandes, por lo que necesitan un sistema de archivos escalable. Una forma de garantizarlo es utilizar un sistema de archivos compartido por varios servidores en una configuración en clúster conectados mediante una red de alta velocidad. El HDFS de Hadoop es altamente escalable y ofrece alta disponibilidad al mantener copias redundantes de los datos para protegerlos contra fallos de los dispositivos. Un nodo maestro distribuye los datos entre varios servidores para repartir los recursos uniformemente entre el clúster de servidores.

Los clústeres tradicionales de Hadoop solían ser sólo on-prem. Como el coste por terabyte del almacenamiento basado en la nube y los costes de administración se han reducido, ahora es el lugar preferido para construir una arquitectura de lago de datos. El almacenamiento en la nube permite la ingestión y el consumo de grandes volúmenes a mayor escala que los clústeres locales. La infraestructura como servicio (IaaS) está disponible en las principales nubes públicas de Google, Microsoft Azure y Amazon Web Services.

Actian Data Platform soporta formatos de datos Hadoop como AVRO, ORC, PARQUET, XML y JSON.

Mejores prácticas de implantación de lagos de datos

Los lagos de datos ayudan a reducir el coste total de propiedad y simplifican gestion des données al consolidar múltiples silos de datos dispares.

Los datos no tienen por qué dejarse en bruto en el lago de datos, ya que pueden preprocesarse o transformarse para prepararlos para aplicaciones de Inteligencia Artificial (IA) y Aprendizaje Automático (ML).

La mayoría de las definiciones de lago de datos lo describen como un almacén de datos singular. Los datos suelen generarse en muchos lugares de una empresa y deben consolidarse y federarse en un número reducido de pools para mantener bajos los costes de gestión. La razón es que mover los datos de un lugar a otro lleva tiempo y dinero, sobre todo si se tienen en cuenta los costes de salida de una plataforma en la nube.

Un enfoque pragmático consistiría en evaluar dónde se generan los datos y seleccionar un puñado de lugares donde puedan agruparse. Los grupos de datos pueden consolidarse virtualmente en una única vista para proporcionar una visión global. Ejemplos de agrupaciones prácticas serían una por plataforma en nube y por geografía, de modo que podría tener agrupaciones para los centros de datos de Asia, EE.UU. y EMEA y agregaciones en Azure, AWS y Google Cloud.

Los motores analíticos pueden desplegarse en cada pool para que pueda consultar datos frescos con baja latencia y utilizar la vista global federada para funciones como la elaboración de informes mensuales o anuales.

Actian Data Platform está disponible para todas las plataformas en la nube y on-prem para permitirle realizar análisis de datos donde tenga sentido ubicar su lago de datos. Solo es necesario que un subconjunto de los datos resida en Actian Data Platform. Se puede acceder a los conjuntos de datos que se utilizan con poca frecuencia a través del conector Spark y enviar predicados SQL al jeu de données origen para mejorar la eficiencia de la consulta.

Para ofrecer transparencia, los datos del lago deben etiquetarse con métadonnées que identifiquen el sistema de origen, la calidad de los datos, la antigüedad y la frecuencia de las actualizaciones para ayudar a determinar su fiabilidad. métadonnées pueden catalogarse para facilitar la procedencia de los datos. La catalogación de los conjuntos de datos mejora gouvernance y la auditabilidad de los datos con fines normativos.

La arquitectura HDFS de Hadoop es especialmente adecuada para un caso de uso de lago de datos debido a su durabilité y a la arquitectura en clúster utilizada para distribuir tareas entre nodos.

Lago de datos frente a almacén de datos

El concepto de lago de datos es más reciente que el de almacén de datos, que se popularizó en los años noventa. El lago de datos es una evolución de la noción de big data. Los lagos de datos y los almacenes de datos se complementan. Pueden coexistir. Los lagos de datos están diseñados para ser un repositorio de datos completos en todas sus formas. En cambio, un almacén de datos está diseñado para poner datos preparados a disposición de los usuarios para consultas inactivas, cuadros de mando de herramientas de BI, visualización y herramientas de IA y ML.

Las plataformas de gestion des données como Actian Data Platform proporcionan un almacén de datos híbrido que puede acceder a datos externos almacenados en un lago de datos.

Actian y Spark

Se puede acceder a los lagos de datos existentes basados en Hadoop utilizando SQL con Hive y Apache Impala, pero es posible obtener órdenes de magnitud de mejor rendimiento cargando los datos en Actian Data Platform. Además, Actian Data Platform ofrece la posibilidad de consultar datos Hadoop en su lugar utilizando tablas externas. La función de tablas externas le permite leer y escribir en fuentes de datos almacenadas fuera de la Actian Data Platform. La fuente de datos debe ser una desde la que Apache Spark pueda leer y escribir, como archivos almacenados en formatos como Parquet, ORC, JSON, o tablas en sistemas de bases de datos externos.

La sintaxis CREAR TABLA EXTERNA crea una tabla de Actian Data Platform que apunta a archivos de datos existentes en ubicaciones fuera de Actian Data Platform. Esta función elimina la necesidad de importar los datos a una nueva tabla cuando los archivos de datos ya se encuentran en una ubicación conocida, en el formato de archivo deseado.

Después de mapear la estructura del archivo de datos al formato de Actian Data Platform utilizando la sentencia CREATE EXTERNAL TABLE, usted puede:

  • Seleccionar, unir u ordenar datos de tablas externas.
  • Crear vistas para tablas externas.
  • Insertar datos en tablas externas.
  • Importe y almacene los datos en la base de datos de Actian Data Platform.

Los datos se consultan desde sus ubicaciones originales, y Actian Data Platform deja los archivos de datos en su lugar cuando se elimina la tabla.

Actian Data Platform aprovecha la amplia conectividad de Apache Spark para la funcionalidad de tablas externas.

Las consultas de Actian Data Platform que operan sobre tablas externas desde el usuario o la app cliente y las reescribe en peticiones JSON de datos externos. A continuación, estas solicitudes se traducen en trabajos Spark, que se lanzan. Estos trabajos suelen emitir consultas (a SparkSQL) como "INSERT INTO avalanche_table SELECT * FROM external_resource" para leer datos externos o "INSERT INTO external_resource SELECT * FROM avalanche_table" para escribir en sistemas externos. Por último, estas tareas introducen y extraen datos de la plataforma de datos Actian.

Incluso puede insertar nuevos registros en una tabla externa.

La sintaxis para definir una tabla externa es:

CREAR TABLA EXTERNA nombre_tabla (nombre_columna tipo_datos {,nombre_columna tipo_datos})
USANDO SPARK
WITH REFERENCE='referencia'
[,FORMAT='formato']
[,OPTIONS=('clave'=valor {,'clave'='valor'})]

Puede obtener más información, consulte CREAR TABLA EXTERNA en la Guía de Lenguaje SQL.

Lectura y escritura en una tabla externa

Una vez definidas las tablas externas con la sintaxis CREATE EXTERNAL TABLE, se comportan como tablas normales de Actian Data Platform. Puede realizar consultas como las siguientes:

SELECT * FROM tabla_prueba_csv

INSERT INTO mi_tabla_orc SELECT alguna_columna FROM otra_tabla

Pushdown de predicados de la plataforma de datos Actian a Spark

Si se emite una consulta SQL a una TABLA EXTERNA utilizando Spark, los predicados de la cláusula WHERE pueden estar ya evaluados por Spark, reduciendo el número de tuplas enviadas. Sólo se admiten predicados que puedan traducirse a un rango de valores de columna. Para las conexiones lógicas de predicados simples, IN y AND se admiten en una sola columna, y entre columnas, OR sólo se admite en una sola columna.

Cuando todo el predicado complejo contiene un único OR que abarca diferentes columnas, no se transfiere nada a Spark. En este caso, Spark transfiere todas las tuplas a Actian Data Platform, y el filtrado se realiza únicamente en Actian Data Platform.

CREAR TABLA EXTERNA Ejemplos

  1. Defina una tabla externa para una fuente de datos CSV que resida en Amazon S3:
CREATE EXTERNAL TABLE ext_csv (col1 INT4 NOT NULL, col2 VARCHAR(20) NOT NULL)
USING SPARK
WITH REFERENCE='s3a://<bucket>/file.csv'
OPTIONS=('DELIMITER' = '|', 'HEADER' = 'TRUE','SCHEMA'='col1 INT4 NOT NULL, col2 VARCHAR(20) NOT NULL');
  1. Definir una tabla externa para una fuente de datos CSV que reside en Amazon S3. Los datos CSV no tienen una fila de encabezado:
CREATE EXTERNAL TABLE nation_s3 (
   n_nationkey INTEGER NOT NULL,
   n_name CHAR(25) NOT NULL,
   n_regionkey INTEGER NOT NULL
) USING SPARK WITH REFERENCE='s3a://<bucket>/nation.csv',FORMAT='csv',
OPTIONS=('HEADER'='FALSE','DELIMITER'='|','SCHEMA'='n_nationkey INT NOT NULL, n_name STRING NOT NULL, n_regionkey INT NOT NULL');
  1. Definir una tabla externa para una fuente de datos ORC de Azure:
CREATE EXTERNAL TABLE mi_tabla_orc(a INT8 NOT NULL)
USANDO SPARK CON REFERENCE='abfs://loadtest@avalanchetest.dfs.core.windows.net/my_table.orc';

  1. Definir una tabla externa para una fuente de datos AVRO de Azure:
CREAR TABLA EXTERNA tweets
(nombre de usuario VARCHAR(20),
tweet VARCHAR(100),
timestamp VARCHAR(50))
USANDO SPARK
WITH REFERENCE='abfs://loadtest@avalanchetest.dfs.core.windows.net/twitter.avro',
FORMATO='com.databricks.spark.avro'

  1. Defina una tabla externa para una fuente de datos JSON utilizando el siguiente archivo JSON:
[{

     "symbol": "MSFT",
     "company": "Microsoft Corporation",
     "stock_tstamp": "2020-01-31T21:00:00+00:00",
     "price": 170.777,
     "volume": 36142690,
     "sector": "TECH"
},
{     "symbol": "AAPL",
     "company": "Apple Inc.",
     "stock_tstamp": "2020-01-31T21:00:00+00:00",
     "price": 309.51,
     "volume": 49897096,
     "sector": "TECH"
},

{     "symbol": "GOOG",
     "company": "Alphabet Inc.",
     "stock_tstamp": "2020-01-31T21:00:00+00:00",
     "price": 1434.23,
     "volume": 2417214,
     "sector": "TECH"

},
{
     "symbol": "AMZN",
     "company": "Amazon.com, Inc.",
     "stock_tstamp": "2020-01-31T21:00:00+00:00",
     "price": 2008.72,
     "volume": 15567283,
     "sector": "TECH"}]

Ejemplo SQL para crear una tabla externa que haga referencia a ese archivo JSON almacenado en un Azure ADL:

CREAR TABLA EXTERNA techstocks (
     símbolo VARCHAR(4),
     empresa VARCHAR(20),
     stock_tstamp TIMESTAMP,
     precio FLOAT,
     volumen INTEGER,
     sector CHAR(5)
) UTILIZANDO SPARK CON REFERENCE='abfs://stockquotes@eastusstockdata.dfs.core.windows.net/tech1.json',
     FORMATO='json',
     OPCIONES=(
     'multiline'='true',
     SCHEMA'= 'símbolo cadena, compañía cadena, stock_tstamp cadena, precio doble, volumen entero, sector

  1. Definir una tabla externa para una fuente de datos CSV que reside en Google Cloud Storage. Los datos CSV no tienen fila de encabezado:
CREATE EXTERNAL TABLE stations (
    n_stationkey INTEGER NOT NULL,
    n_stationname CHAR(25) NOT NULL,
    n_locationkey INTEGER NOT NULL
) USING SPARK WITH REFERENCE='gs://<path>/stations.csv',FORMAT='csv',
OPTIONS=('HEADER'='FALSE','DELIMITER'='|','SCHEMA'='n_stationkey INT NOT NULL, n_stationname STRING NOT NULL, n_locationkey INT NOT NULL');
  1. Elimina todas las filas en las que la columna de texto contiene un carácter NULL. El filtrado se realiza íntegramente en Spark con un posible predicado pushdown a la fuente de datos:
CREAR TABLA EXTERNA filter_test(id INT, text VARCHAR(20))
USING SPARK WITH REFERENCE='prueba.csv',
FORMATO='csv',
OPCIONES=(
'header'='false
'schema'='id Integer, text String',
'filter'='text NOT LIKE "%\u0000%"');
  1. Cree una tabla externa test_ext que haga referencia a una tabla test en otra instancia de Actian Data Platform:
CREAR TABLA EXTERNA test_ext(id Int, text VARCHAR(20))
USING SPARK WITH REFERENCE='dummy',
FORMATO='vector',
OPCIONES=(
'host'='localhost',
'port'='VW7',
'base de datos'='testdb',
'tabla'='prueba',
usuario'='actian',
contraseña = 'actian',
'staging'='select id, replace(text, "e", "i") as text from ESTA_TABLE',
);

Staging SparkSQL crea una tabla intermedia que realiza el reemplazo de cadenas. THIS_TABLE es una palabra clave designada.

  1. Esquema de mapa simplemente anidando un archivo parquet anidado:
CREAR TABLA EXTERNA unnested(id INT, nombre VARCHAR(20), apellido VARCHAR(20))
USING SPARK WITH REFERENCE='anidado.parquet',
FORMATO='parquet',
OPCIONES=(
SCHEMA'='id entero, fullname struct(nombre cadena, apellido cadena)',
'STAGING'='select id, nombre_completo.nombre como nombre, nombre_completo.apellido como apellido from ESTA_TABLE'
);

Cree su entorno de lago de datos y evalúe usted mismo las capacidades de Actian Data Platform.