Non classé

Lac de données : Tout ce qu'il faut savoir

trouver une abondance d'informations dans un lac de données

Qu'est-ce qu'un lac de données ?

Un lac de données est utilisé pour stocker et traiter des données structurées ou semi-structurées dans leur format natif. Les entreprises créent et reçoivent de gros volumes de données que vous pouvez stocker en toute fidélité dans un lac de données à des fins d'analyse.

Pourquoi utiliser un lac de données ?

Les entreprises ont besoin d'un lieu central pour stocker toutes les données potentiellement précieuses collectées par les systèmes opérationnels, les blogs et les systèmes périphériques. Un lac de données complète les entrepôts de données qui sont utilisés pour support exigences des rapports réguliers. Un lac de données a une portée plus large en fournissant un dépôt pour les données utilisées peu fréquemment ou pour support projets peu fréquents tels que les audits et l'exploration de nouvelles initiatives commerciales.

La gestion d'une base de données étendue peut s'avérer difficile, c'est pourquoi de grandes quantités de données sont facilement disponibles dans un magasin en nuage tel qu'Amazon S3.

Tous les formats de données ne peuvent pas être pris en compte dans un système de gestion de base de données relationnelles. Par conséquent, un lac de données fournit un dépôt pour tous les formats de données dans un système de fichiers unique ou un magasin en nuage. La plateforme de données Actian fournit une interface standard basée sur SQL pour un lac de données qui utilise des extensions permettant d'accéder à des données externes en utilisant les mêmes API que celles utilisées pour les tables stockées en interne.

Caractéristiques du lac de données

Les attributs suivants peuvent caractériser les lacs de données :

  • Stocker des données structurées, semi-structurées et non structurées.
  • Peut être centralisé sur un système de fichiers unique ou une plateforme de stockage en nuage.
  • Pour être qualifiés de lac de données, ils doivent stocker de grandes quantités de données allant de 100 téraoctets à plus de 100 téraoctets.
  • Utilise souvent l'interface HDFS, HBASE ou Spark.
  • Il est possible d'y accéder en utilisant les extensions Spark par gestion des données comme la plateforme de données Actian.
  • Ils simplifient la gestion des données.
  • Se préparer à intégrer l'intelligence artificielle et l'apprentissage automatique.
  • Ils accélèrent les projets d'analyse.
  • Ils améliorent la sécurité et la gouvernance.

Architecture du lac de données

Les lacs de données ont tendance à être volumineux, ils ont donc besoin d'un système de fichiers évolutif . L'un des moyens d'y parvenir est d'utiliser un système de fichiers partagé par plusieurs serveurs dans une configuration en grappe, reliés par un réseau à haut débit. Le système Hadoop HDFS est très évolutif et offre une haute disponibilité en maintenant des copies redondantes des données pour se prémunir contre les défaillances des périphériques. Un nœud maître distribue les données sur plusieurs serveurs afin de répartir les ressources de manière homogène sur la grappe de serveurs.

Les clusters Hadoop traditionnels se trouvaient auparavant uniquement sur site. Avec la baisse du coût par téraoctet du stockage en nuage et la diminution des coûts d'administration, c'est désormais l'endroit privilégié pour construire une architecture de lac de données. Le stockage en nuage prend en charge l'ingestion et la consommation de gros volumes à une plus grande échelle que les clusters internes. L'infrastructure en tant que service (IaaS) est disponible dans tous les principaux nuages publics de Google, Microsoft Azure et Amazon Web Services.

La plateforme de données Actian prend en charge les formats de données Hadoop tels que AVRO, ORC, PARQUET, XML et JSON.

Bonnes pratiques de mise en œuvre d'un lac de données

Les lacs de données permettent de réduire le coût total de possession et de simplifier la gestion des données en consolidant plusieurs silos de données disparates.

Les données ne doivent pas nécessairement être laissées à l'état brut dans le lac de données, car elles peuvent être prétraitées ou transformées pour les préparer aux applications d'intelligence artificielle (IA) et d'apprentissage automatique (ML).

La plupart des définitions d'un lac de données le décrivent comme un magasin de données unique. Les données sont généralement générées à de nombreux endroits dans une entreprise et devraient être consolidées et fédérées à travers un petit nombre de pools afin de maintenir les coûts de gestion à un niveau bas. La raison en est qu'il faut du temps et de l'argent pour déplacer les données, surtout si l'on tient compte des coûts de sortie d'une plateforme en nuage.

Une approche pragmatique consisterait à évaluer où les données sont générées et à sélectionner une poignée d'endroits où elles peuvent être mises en commun. Les pools de données peuvent être virtuellement consolidés en une vue unique afin de fournir une vue d'ensemble. Par exemple, vous pourriez avoir des pools pour les centres de données d'Asie, des États-Unis et de la région EMEA et des agrégations sur Azure, AWS et Google Cloud.

Des moteurs d'analyse peuvent être déployés dans chaque pool afin que vous puissiez consulter des données fraîches avec une faible latence et utiliser la vue globale fédérée pour des fonctions telles que les rapports mensuels ou annuels.

La plateforme de données Actian est disponible pour toutes les plateformes en nuage et sur site afin de vous permettre d'effectuer des analyses de données là où il est logique d'installer votre lac de données. Seul un sous-ensemble de données doit résider dans la plateforme de données Actian. Les ensembles de données peu utilisés peuvent toujours être accédés par le connecteur Spark et les prédicats SQL peuvent être poussés vers le jeu de données source afin d'améliorer l'efficacité des requête .

Pour assurer la transparence, les données du lac doivent être marquées avec des métadonnées qui identifient le système source, la qualité des données, l'âge et la fréquence des mises à jour afin d'aider à déterminer leur fiabilité. Ces métadonnées peuvent être cataloguées pour faciliter la provenance des données. Le catalogage des ensembles de données améliore la gouvernance et l'auditabilité des données à des fins réglementaires.

L'architecture Hadoop HDFS est particulièrement bien adaptée à un cas d'usage de lac de données en raison de sa durabilité et de l'architecture en grappe utilisée pour répartir les tâches entre les nœuds.

Lac de données ou entrepôt de données

Le concept de lac de données est plus récent que celui d'entrepôt de données, qui a gagné en popularité dans les années 1990. Le lac de données est une évolution de la notion de big data. Les lacs de données et les entrepôts de données sont complémentaires. Ils peuvent coexister. Les lacs de données sont conçus pour être un dépôt données complètes sous toutes leurs formes. En revanche, un entrepôt de données est conçu pour mettre des données préparées à la disposition des utilisateurs pour des requêtes inactives, des tableaux de bord d'outils de BI, des visualisations, des outils d'IA et de ML.

Lesplateformes gestion des données telles que la plateforme de données Actian fournissent un entrepôt de données hybride qui peut accéder à des données externes stockées dans un lac de données.

Actian et Spark

Les lacs de données existants basés sur Hadoop sont accessibles à l'aide de SQL avec Hive et Apache Impala, mais il est possible d'obtenir des performances bien meilleures en chargeant les données dans la plateforme de données Actian. De plus, la plateforme de données Actian offre la possibilité de requête données Hadoop en place à l'aide de tables externes. La fonction de tables externes vous permet de lire et d'écrire dans des sources de données stockées en dehors de la plateforme de données Actian. La source de données doit pouvoir être lue et écrite par Apache Spark, par exemple des fichiers stockés dans des formats tels que Parquet, ORC, JSON, ou des tables dans des systèmes de bases de données externes.

La syntaxe CREATE EXTERNAL TABLE permet de créer une table de plateforme de données Actian qui pointe vers des fichiers de données existants situés à l'extérieur de la plateforme de données Actian. Cette fonction élimine la nécessité d'importer les données dans une nouvelle table lorsque les fichiers de données se trouvent déjà à un emplacement connu, dans le format de fichier souhaité.

Une fois la structure du fichier de données mappée au format de la plateforme de données Actian à l'aide de l'instruction CREATE EXTERNAL TABLE, vous pouvez.. :

  • Sélectionner, joindre ou trier les données d'une table externe.
  • Créer des vues pour les tables externes.
  • Insérer des données dans des tables externes.
  • Importer et stocker les données dans la plateforme de données Actian .

Les données sont interrogées à partir de leur emplacement d'origine et la plateforme de données Actian laisse les fichiers de données en place lorsque vous déposez la table.

La plateforme de données Actian tire parti de la connectivité étendue d'Apache Spark pour la fonctionnalité des tables externes.

La plateforme de données Actian effectue des requêtes sur des tables externes à partir de l'application de l'utilisateur ou du client et les réécrit en requêtes JSON pour des données externes. Ces requêtes sont ensuite traduites en jobs Spark, qui sont lancés. Ces jobs émettent typiquement des requêtes (vers SparkSQL) comme "INSERT INTO avalanche_table SELECT * FROM external_resource" pour lire des données externes ou "INSERT INTO external_resource SELECT * FROM avalanche_table" pour écrire dans des systèmes externes. Enfin, ces tâches font entrer et sortir des données de la plateforme de données Actian.

Vous pouvez même insérer de nouveaux enregistrements dans une table externe.

La syntaxe pour définir une table externe est la suivante :

CREATE EXTERNAL TABLE table_name (column_name data_type {,column_name data_type})
UTILISANT SPARK
WITH REFERENCE='reference'
[,FORMAT='format']
[,OPTIONS=('key'=value {,'key'='value'})]

Pour plus d'informations, voir CREATE EXTERNAL TABLE dans le Guide du langage SQL.

Lecture et écriture dans un tableau externe

Une fois que les tables externes sont définies à l'aide de la syntaxe CREATE EXTERNAL TABLE, elles se comportent comme des tables ordinaires de plateforme de données Actian . Vous pouvez émettre des requêtes telles que les suivantes :

SELECT * FROM test_table_csv

INSERT INTO my_table_orc SELECT some_column FROM other_table

Predicate Pushdown de la plateforme de données Actian vers Spark

Si une requête SQL est envoyée à une TABLE EXTERNE à l'aide de Spark, les prédicats de la clause WHERE peuvent déjà être évalués par Spark, réduisant ainsi le nombre de tuples envoyés. Seuls les prédicats qui peuvent être traduits en une plage de valeurs de colonnes sont pris en charge. Pour les connexions logiques des prédicats simples, IN et AND sont pris en charge sur une seule colonne, et entre les colonnes, OR n'est pris en charge que sur une seule colonne.

Lorsque l'ensemble du prédicat complexe contient un seul OU couvrant différentes colonnes, rien n'est poussé vers Spark. Dans ce cas, Spark transfère tous les tuples vers la plateforme de données Actian, et le filtrage est effectué uniquement du côté de la plateforme de données Actian .

Exemples de création d'une table externe

  1. Définir une table externe pour une source de données CSV résidant sur 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. Définir une table externe pour une source de données CSV résidant dans Amazon S3. Les données CSV n'ont pas de ligne d'en-tête :
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. Définir une table externe pour une source de données ORC à partir d'Azure :
CREATE EXTERNAL TABLE my_table_orc(a INT8 NOT NULL)
EN UTILISANT SPARK AVEC REFERENCE='abfs://loadtest@avalanchetest.dfs.core.windows.net/my_table.orc' ;

  1. Définir une table externe pour une source de données AVRO à partir d'Azure :
CREATE EXTERNAL TABLE tweets
(nom d'utilisateur VARCHAR(20),
tweet VARCHAR(100),
timestamp VARCHAR(50))
UTILISANT SPARK
AVEC REFERENCE='abfs://loadtest@avalanchetest.dfs.core.windows.net/twitter.avro',
FORMAT='com.databricks.spark.avro'

  1. Définissez une table externe pour une source de données JSON à l'aide du fichier JSON suivant :
[{

     "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"}]

Exemple de SQL pour créer une table externe afin de référencer ce fichier JSON stocké sur un Azure ADL :

CREATE EXTERNAL TABLE techstocks (
     symbole VARCHAR(4),
     company VARCHAR(20),
     stock_tstamp TIMESTAMP,
     prix FLOAT,
     volume INTEGER,
     secteur CHAR(5)
) EN UTILISANT SPARK AVEC REFERENCE='abfs://stockquotes@eastusstockdata.dfs.core.windows.net/tech1.json',
     FORMAT='json',
     OPTIONS=(
     'multiline'='true',
     'SCHEMA'= 'symbol string, company string, stock_tstamp string, price double, volume integer, sector

  1. Définir une table externe pour une source de données CSV résidant dans Google Cloud Storage. Les données CSV n'ont pas de ligne d'en-tête :
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. Supprimer toutes les lignes où la colonne texte contient le caractère NULL. Le filtrage est effectué entièrement du côté de Spark avec un éventuel prédicat poussé vers la source de données :
CREATE EXTERNAL TABLE filter_test(id INT, text VARCHAR(20))
UTILISANT SPARK AVEC REFERENCE='test.csv',
FORMAT='csv',
OPTIONS=(
'header'='false',
'schema'='id Integer, text String',
'filter'='text NOT LIKE "%\u0000%"') ;
  1. Créer une table externe test_ext référençant une table test dans une autre instance de plateforme de données Actian :
CREATE EXTERNAL TABLE test_ext(id Int, text VARCHAR(20))
UTILISANT SPARK AVEC REFERENCE='dummy',
FORMAT='vector',
OPTIONS=(
'host'='localhost',
'port'='VW7',
'database'='testdb',
'table'='test',
utilisateur'='actian',
'password'='actian',
'staging'='select id, replace(text, "e", "i") as text from THIS_TABLE',
) ;

SparkSQL crée une table intermédiaire qui remplace les chaînes de caractères. THIS_TABLE est un mot-clé désigné.

  1. Schéma de carte en désintriquant simplement un fichier parquet imbriqué :
CREATE EXTERNAL TABLE unnested(id INT, name VARCHAR(20), surname VARCHAR(20))
UTILISANT SPARK AVEC REFERENCE='nestedparquet',
FORMAT=parquet',
OPTIONS=(
'SCHEMA'='id integer, fullname struct(name string, surname string)',
'STAGING'='select id, fullname.name as name, fullname.surname as surname from THIS_TABLE'
) ;

Créez votre environnement de lac de données et évaluez les capacités de la plateforme de données Actian par vous-même.