Système de fichiers OpenStack Swift Object Store - Bêta - Import
Spécifications du pont
Fournisseur | OpenStack |
Nom de l'outil | Système de fichiers Swift Object Store |
Version de l'outil | 1.0 |
Site Web de l'outil | https://www.openstack.org/software/releases/queens/components/swift (uniquement en anglais) |
Méthodologie supportée | [Système de fichiers] Multimodèle, Data Store (NoSQL/Hiérarchique) via l'API REST |
Profiling de données | |
Collecte incrémentale | |
Collecte multi-modèle | |
Navigation dans le référentiel distant pour sélectionner un modèle |
SPÉCIFICATIONS
Outil : OpenStack/Système de fichiers Swift Object Store version 1.0 via une API REST
Consultez https://www.openstack.org/software/releases/queens/components/swift
Métadonnées : [Système de fichiers] Multimodèle, Data Store (NoSQL/Hiérarchique)
Composant : OpenStackSwift version 11.2.0
VUE D'ENSEMBLE
Ce pont d'import crawle un data lake implémenté sur OpenStack Swift afin de détecter (par rétro-ingénierie) les métadonnées de tous les fichiers de données (à des fins de catalogage de données).
PRÉREQUIS
FICHIERS SUPPORTÉS
Ce pont d'import supporte les formats de fichiers suivants :
- Fichiers délimités (plats), comme CSV (voir les détails ci-dessous)
-Fichiers positionnels (longeur fixe), généralement du mainframe (voir les détails ci-dessous)
- Fichiers COBOL COPYBOOK, généralement du mainframe (voir les détails ci-dessous)
- Fichiers XML Open Office Excel .XSLX (voir les détails ci-dessous)
- Fichiers W3C XML
- Fichiers JSON (JavaScript Object Notation)
- Apache Avro
- Apache Parquet
- Apache ORC
ainsi que les versions compressées des formats ci-dessus :
- ZIP (en tant que format de compression, pas en tant que format archive)
- BZIP
- GZIP
- LZ4
- Snappy (en tant que format standard Snappy, pas en tant que format Snappy natif de Hadoop)
FICHIERS DÉLIMITÉS
Ce pont d'import détecte (rétro-ingénierie) les métadonnées à partir d'un fichier de données de type Fichier délimité (appelé aussi Fichier plat).
La détection de ce Fichier délimité ne se base pas sur les extensions de fichier (comme .CVS, .PSV) mais sur l'échantillonnage du contenu du fichier.
Le pont d'import a la capacité de détecter une ligne d'en-tête et de l'utiliser pour créer un nom de champ, sinon des noms de champs génériques sont créés.
Le pont d'import échantillonne jusqu'à 1000 lignes afin de détecter automatiquement les séparateurs de champs qui sont par défaut :
', (virgule)', '; (point-virgule)', ': (deux-points)', '\t (tabulation)', '| (barre verticale)', '0x1 (ctrl+A)'
D'autres séparateurs peuvent être ajoutés dans le processus de détection automatique (notamment des caractères doubles). Consultez le paramètre Divers.
Pendant l'échantillonnage, le pont d'import détecte également les types de données de fichier, tels que DATE, NUMBER, STRING.
FICHIERS POSITIONNELS
Ce pont d'import crée des métadonnées pour des fichiers de données de type Fichier positionnel (également connu comme fichier à longueur fixe).
De telles métadonnées ne peuvent pas être détectées automatiquement (rétro-ingénierie) par l'échantillonnage des fichiers de données (p. ex. customers.dat ou même simplement "customers" sans extension).
C'est pourquoi ce pont d'import importe un fichier "Positional File Definition" qui doit contenir l'extension de format de fichier .positional_file_definition
(par exemple, le fichier au format customers.dat.positional_file_definition créera les métadonnées d'un fichier "file customers" dont les champs seront définis à l'intérieur)
Ceci est l'équivalent d'un DDL RDBMS pour les fichiers positionnels. Avec une extension d'une telle longueur, ce fichier de définition de données peut coexister avec les fichiers de données réels dans chaque répertoire système de fichiers les contenant.
Le format de fichier "Positional File Definition (Définition de fichier positionnel)" est défini tel que suit :
- Le fichier doit commencer par l'en-tête suivant
nom de colonne, position, largeur, type de données, commentaire
- Les positions doivent être uniques et supérieures ou égales à 1.
a,1
b,5
- Le format du fichier est invalide lorsque certaines colonnes ont des positions et d'autres n'en ont pas.
a,1
b,
c,5
- Lorsque toutes les colonnes n'ont pas de position mais ont une largeur, l'application suppose que ces colonnes sont ordonnées et calcule les positions en fonction des largeurs
a,,4 -> a,1,4
b,,25 -> b,5,25
- Lorsque la position est présente, l'application utilise les largeurs uniquement à des fins de documentation.
a,1,4
b,5,25
- Les types et commentaires sont utilisés comme documentation uniquement.
a,1,4,int
b,5,25,char[25],identifier
FICHIERS COBOL COPYBOOK
Ce pont d'import n'importe que les fichiers COBOL COPYBOOK (qui contiennent les définitions de données). Par conséquent, il ne détecte pas (rétro-ingénierie) les métadonnées des fichiers de données COBOL réels.
La détection de ce fichier COBOL COPYBOOK ne se base pas sur les extensions de fichier (comme .CPY) mais sur l'échantillonnage du contenu du fichier.
Ce pont crée un "Modèle hiérarchique physique" qui reflète une structure d'enregistrement, défini par sa position en nombre d'octets, vraiment plat, utile pour combiner les processus d'intégration de données/ETL. Ainsi, le modèle physique possède tous les éléments physiques nécessaires pour définir un enregistrement plat, qui consiste en UNE table contenant tous les éléments (comprenant plusieurs colonnes pour les éléments OCCURRENCES si le paramètre de pont d'import approprié est configuré).
Notez qu'actuellement ce pont d'import ne supporte pas le verbe COPY et rapporte une erreur de parsing pour la ligne et la position sur lesquelles l'instruction COPY commence. Afin d'importer des fichiers COPYBOOK ayant l'instruction Copy, créez un fichier COPYBOOK étendu avec les sections incluses déjà en place (remplaçant le verbe COPY). La plupart des compilateurs COBOL permettent d'écrire en sortie uniquement les fichiers COPYBOOK prétraités avec les instructions COPY et REPLACE étendues.
FOIRE AUX QUESTIONS
Q : Pourquoi la colonne "6" (six) est-elle la colonne de début par défaut et la colonne "72" (soixante-douze), la colonne de fin ?
R : L'analyseur de pont d'import compte les colonnes à partir de 0 (zéro), plutôt que 1 (un). De plus, le paramétrage par défaut laisse les six premières colonnes standards pour les numéros de lignes, la colonne suivante pour les indicateurs de commentaires et les 8 dernières (sur 80 au total) sont réservées à des informations sur les commentaires de lignes supplémentaires.
FICHIERS EXCEL (XLSX)
Ce pont d'import détecte (rétro-ingénierie) les métadonnées à partir d'un fichier de données de format de type Excel XML (XLSX).
La détection de ces fichiers Excel est basée sur l'extension du fichier .XLSX.
Le pont d'import a la capacité de détecter une ligne d'en-tête et de l'utiliser pour créer un nom de champ, sinon des noms de champs génériques sont créés.
Le pont d'import effectue un échantillonnage jusqu'à 1 000 lignes pour détecter les types de données de fichier, tels que DATE, NUMBER, STRING.
Si un fichier Excel contient plusieurs feuilles, chacune d'entre elles est considérée lors de l'import comme l'équivalent d'un fichier/d'une table avec le même nom de feuille.
Le pont d'import utilise les paramètres locaux de la machine pour lire les fichiers et vous permet de spécifier l'ensemble de caractères utilisé par les fichiers d'encodage.
LIMITATIONS
Consultez les limitations générales connues à l'adresse MIMB Known Limitations ou dans Documentation/ReadMe/MIMBKnownLimitations.html où elles sont regroupées
SUPPORT
Fournissez un package de dépannage avec :
- le log de débogage (configurable dans l'interface ou dans conf/conf.properties avec MIR_LOG_LEVEL=6)
- la sauvegarde des métadonnées si disponible (configurable dans le paramètre Divers avec l'option -backup même si cette option commune n'est pas implémentée pour tous les ponts pour des raisons techniques).
Paramètres du pont
Nom du paramètre | Description | Type | Valeurs | Défaut | Périmètre |
Endpoint REST : | Votre Endpoint REST pour signer les requêtes programmatiques vers le service. | Chaîne de caractères | |||
Endpoint Auth V1 : | Votre Endpoint Auth V1 pour authentifier le pont d'import. | Chaîne de caractères | |||
User (Utilisateur) | Username | Chaîne de caractères | |||
Password | Password | MOT DE PASSE | |||
Container | Nom du conteneur | Chaîne de caractères | |||
Miscellaneous | INTRODUCTION Spécifiez les options Divers, commençant par un tiret et suivies éventuellement par des paramètres, par exemple : -connection.cast MyDatabase1="MICROSOFT SQL SERVER" Certaines options peuvent être utilisées plusieurs fois, si applicable, par exemple : -connection.rename NewConnection1=OldConnection1 -connection.rename NewConnection2=OldConnection2; La liste d'options pouvant être une longue chaîne, il est possible de la charger à partir d'un fichier qui doit être situé dans ${MODEL_BRIDGE_HOME}\data\MIMB\parameters et avoir l'extension .txt. Dans ce cas, toutes les options doivent être définies au sein de ce fichier comme seule valeur de ce paramètre, par exemple ETL/Miscellaneous.txt OPTIONS DE L'ENVIRONNEMENT JAVA -java.memory <taille maximale de la mémoire Java> (anciennement -m) 1 Go par défaut sur un JRE de 64 bits ou tel que défini dans conf/conf.properties, par exemple -java.memory 8G -java.memory 8000M -java.parameters <options de ligne de commande de Java Runtime Environment> (anciennement -j) Cette option doit être la dernière dans le paramètre Divers car tout le texte après -java.parameters est passé tel quel à la JRE. Par ex. -java.parameters -Dname=value -Xms1G L'option suivante doit être définie lorsqu'un proxy est utilisé pour accéder à Internet (cela est essentiel pour accéder à https://repo.maven.apache.org/maven2/ et exceptionnellement à quelques autres sites d'outils) afin de télécharger les bibliothèques logicielles tierces nécessaires. Note : La majorité des proxys sont relatifs au chiffrement (HTTPS) du trafic extérieur (à l'entreprise) et à la confiance en le trafic intérieur pouvant accéder au proxy via HTTP. Dans ce cas, une requête HTTPS atteint le proxy via HTTP où le proxy la chiffre en HTTPS. -java.parameters -java.parameters -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=3128 -Dhttp.proxyUser=user -Dhttp.proxyPassword=pass OPTIONS D'IMPORT DU MODÈLE -model.name <nom modèle> Écrase le nom du modèle, par ex. -model.name "My Model Name" -prescript <nom script> Cette option permet d'exécuter un script avant l'exécution du pont. Le script doit se situer dans le répertoire bin (ou comme spécifié dans M_SCRIPT_PATH dans conf/conf.properties) et avoir une extension .bat ou .sh. Le chemin d'accès au script ne doit pas inclure de symbole relatif au répertoire parent (..). Le script doit retourner le code de sortie 0 pour indiquer un succès ou une autre valeur pour indiquer un échec. Par exemple : -prescript "script.bat arg1 arg2" -postscript <nom script> Cette option permet d'exécuter un script après l'exécution réussie du pont. Le script doit se situer dans le répertoire bin (ou comme spécifié dans M_SCRIPT_PATH dans conf/conf.properties) et avoir une extension .bat ou .sh. Le chemin d'accès au script ne doit pas inclure de symbole relatif au répertoire parent (..). Le script doit retourner le code de sortie 0 pour indiquer un succès ou une autre valeur pour indiquer un échec. Par exemple : -postscript "script.bat arg1 arg2" -cache.clear Vide le cache avant l'import et va exécuter un import complet avec collecte incrémentale. Si le modèle n'a pas été modifié et que le paramètre -cache.clear n'est pas utilisé (collecte incrémentale), une nouvelle version ne sera pas créée. Si le modèle n'a pas été modifié et que le paramètre -cache.clear n'est pas utilisé (collecte incrémentale), une nouvelle version ne sera pas créée. -backup <répertoire> Cette option permet de sauvegarder les métadonnées d'entrée du pont à des fins de débogage. Le <répertoire> fourni doit être vide. L'utilisation principale de cette option concerne les ponts d'import des data stores, en particulier les ponts d'import basés sur des bases de données JDBC. Notez que cette option n'est pas opérationnelle sur certains ponts, notamment : - les ponts d'import basés sur des fichiers (car des fichiers d'entrée peuvent être utilisés à la place) - les ponts d'import de référentiels d'intégration de données/BI (car les outils natifs de sauvegarde du référentiel peuvent être utilisés à la place) - Certains ponts d'import basés sur des API (par ex. basés sur COM) pour des raisons techniques. OPTIONS DES CONNEXIONS DE DONNÉES Les connexions de données sont produites par les ponts d'import, généralement à partir des outils ETL/DI et BI pour faire référence aux data stores sources et cibles qu'elles utilisent. Ces connexions de données sont ensuite utilisées par les outils de gestion des métadonnées pour connecter ces dernières (connexion des métadonnées) à leurs data stores réels (par exemple, bases de données, système de fichiers, etc.) afin de produire le lignage complet de flux de données et de l'analyse d'impact de bout en bout. Le nom des connexions de données doit être unique dans chaque modèle d'import. Les noms de connexion de données utilisés dans les outils de conception DI/BI sont utilisés quand cela est possible, sinon ils sont générés en étant courts mais significatifs, comme le nom de la base de données/du schéma, le chemin d'accès au système de fichiers ou l'URI (Uniform Resource Identifier). L'option suivante vous permet de manipuler les connexions. Ces options remplacent les options héritées -c, -cd et -cs. -connection.cast ConnectionName=ConnectionType Lance une connexion à une base de données générique (par exemple ODBC/JDBC) pour un type de base de données précis (par exemple ORACLE) pour une analyse SQL, par exemple -connection.cast "My Database"="MICROSOFT SQL SERVER". La liste des types de connexions aux data stores comprend : ACCESS APACHE CASSANDRA DB2/UDB DENODO GOOGLE BIGQUERY HIVE MYSQL NETEZZA ORACLE POSTGRESQL PRESTO REDSHIFT SALESFORCE SAP HANA SNOWFLAKE MICROSOFT SQL AZURE MICROSOFT SQL SERVER SYBASE SQL SERVER SYBASE AS ENTERPRISE TERADATA VECTORWISE HP VERTICA -connection.rename OldConnection=NewConnection Renomme une connexion existante, par exemple, par ex. -connection.rename OldConnectionName=NewConnectionName Plusieurs connexions de bases de données existantes peuvent être renommées et fusionnées en une nouvelle connexion de base de données, par exemple : -connection.rename MySchema1=MyDatabase -connection.rename MySchema2=MyDatabase -connection.split oldConnection.Schema1=newConnection Scinde une connexion de base de données en une ou plusieurs connexions de base de données. Une connexion de base de données peut être scindée en une connexion par schéma, par exemple : -connection.split MyDatabase Toutes les connexions de base de données peuvent être fractionnées en une connexion par schéma, par exemple : -connection.split * Une connexion de base de données peut être explicitement fractionnée en une nouvelle connexion de base de données en ajoutant un nom de schéma à une base de données, par exemple : -connection.split MyDatabase.schema1=MySchema1 -connection.map SourcePath=DestinationPath Mappe un chemin d'accès source à un chemin d'accès de destination. Cela est utile pour les connexions aux systèmes de fichiers lorsque différents chemins d'accès pointent vers le même objet (répertoire ou fichier). Sur Hadoop, un processus peut écrire dans un fichier CSV spécifié avec le chemin d'accès complet HDFS, tandis qu'un autre processus lit d'une table Hive implémentée (externe) par le même fichier spécifié à l'aide d'un chemin d'accès relatif avec un nom et une extension de fichier par défaut, par exemple : -connection.map /user1/folder=hdfs://host:8020/users/user1/folder/file.csv Sous Linux, il peut être fait référence à un répertoire (ou à un fichier) donné tel que /data par plusieurs liens symboliques tels que /users/john et /users/paul, par exemple : -connection.map /data=/users/John -connection.map /data=/users/paul Sous Windows, il peut être fait référence à un répertoire donné tel que C:\data par plusieurs lecteurs réseau tels que M: et N:, par exemple : -connection.map C:\data=M:\ -connection.map C:\data=N:\ -connection.casesensitive ConnectionName Écrase les règles de rapprochement insensibles à la casse par défaut pour les identifiants d'objets dans la connexion spécifiée, si le type du data store détecté supporte cette configuration (par ex. Microsoft SQL Server, MySQL etc.), par exemple : -connection.casesensitive "My Database" -connection.level AggregationLevel Spécifie le niveau d'agrégation pour les connexions externes, par exemple -connection.level catalog Liste des valeurs supportées : server (serveur) catalog (catalogue) schema (schéma)(par défaut) OPTIONS DU SYSTÈME DE FICHIERS -file.encoding <Valeur d'encodage> Utilise la valeur d'encodage pour lire les fichiers texte (p. ex. délimités et à largeur fixe). Les langages supportés sont répertoriés ci-dessous avec la valeur d'encodage réelle entre parenthèses à la fin de chaque ligne, par exemple : -file.encoding shift_jis Européen central et oriental (ISO-8859-2) Européen central et oriental (Windows-1250) Chinois traditionnel (Big5) Chinois simplifié (GB18030) Chinois simplifié (GB2312) Cyrillique (ISO-8859-5) Cyrillique (Windows-1251) DOS (IBM-850) Grec (ISO-8859-7) Grec (Windows-1253) Hébreu (ISO-8859-8) Hébreu (Windows-1255) Japonais (Shift_JIS) Coréen (KS_C_5601-1987) Thaï (TIS620) Thaï (Windows-874) Turc (ISO-8859-9) Turc (Windows-1254) UTF-8 (UTF-8) UTF-16 (UTF-16) Européen occidental (ISO-8859-1) Européen occidental (ISO-8859-15) Européen occidental (Windows-1252) Encodage de la locale Aucune conversion d'encodage -processing.max.threads <number> (précédemment -tps) Permet d'effectuer un traitement parallèle jusqu'à un nombre maximal de threads (1 par défaut), par exemple : -processing.max.threads 10 -processing.max.time <time> (précédemment -tl) Configure une limite de temps pour le traitement de tous les fichiers. Le temps peut être spécifié en secondes, minutes ou heures, par ex. -processing.max.time 3600s -processing.max.time 60m -processing.max.time 1h -processing.max.files <number> (précédemment -fl) Configure un nombre maximal de fichiers à traiter (pas de limite par défaut), par ex. -processing.max.files 100 Utilisez cette option avec précaution pour gérer le grand nombre de fichiers pouvant se trouver dans les répertoires de partition. Le paramètre Partition directories (Répertoires de partition) doit être spécifié pour déclarer correctement les répertoires de partition. Cette spécification ne limite pas uniquement le nombre de fichiers similaires à traiter mais produit également un modèle propre du data lake en tant que partition plutôt qu'un grand nombre de fichiers. -partitions.latest (précédemment -fresh.partition.models) Utilise UNIQUEMENT les fichiers récemment modifiés lors du traitement des partitions définies dans le paramètre Répertoires partitionnés. -partitions.disable.detection (précédemment -disable.partitions.autodetection) Désactive la détection automatique des partitions (si l'option "Répertoires de partition" est vide) -cache.reuse (précédemment -skip.download) Réutilise ce qui a déjà été téléchargé dans le cache en désactivant le téléchargement des dépendances. -hadoop.key <Hadoop configuration options> (précédemment -hadoop) Définit les valeurs clés pour les bibliothèques Hadoop (Aucune par défaut), par exemple : -hadoop.key key1=val1;key2=val2 -path.substitute <path> <new path> (précédemment -subst) Remplace un chemin racine par un nouveau, par exemple : -path.substitute K: C:\test -detailed.log Afficher tous les chemins d'accès aux fichiers traités dans le log debug. OPTIONS DES FICHIERS DÉLIMITÉS -delimited.disable.header.parsing (précédemment -delimited.no_header) Désactive le parsing de l'en-tête des fichiers délimités (les en-têtes sont parsés par défaut pour détecter les noms de champs). Utilisez cette option si le fichier délimité n'a pas d'en-tête ou si vous souhaitez désactiver l'import de l'en-tête (si les noms de champs sont sensibles à la casse). -delimited.ignore.top.rows <number> (précédemment -delimited.top_rows_skip) Ignore un certain nombre de lignes en haut des fichiers délimités (0 par défaut). Utilisez cette option si les fichiers délimités contiennent plusieurs lignes de description au début. -delimited.ignore.top.rows 1 -delimited.add.separators <comma separated separators> (précédemment -delimited.extra_separators) Ajoute d'éventuels séparateurs lors du parsing de fichiers délimités. Par défaut, les séparateurs détectés comprennent : ', (virgule)', '; (point-virgule'), '\t (tabulation)', '| (barre verticale)', '0x1 (ctrl+A)', 'BS (\u0008)', ': (deux-points)' Les séparateurs supplémentaires peuvent se composer de plusieurs caractères, par ex. -delimited.add.separators ~,||,|~ OPTIONS DES FICHIERS PARQUET -parquet.max.compressed.size <value> (précédemment -parquet.compressed.max.size) Ignore tous les fichiers d'archive Parquet dont la taille compressée est supérieure à la valeur fournie (la valeur par défaut est de 10 000 000 octets), par exemple : -parquet.compressed.max.size=10000000 |
Chaîne de caractères |
Mapping du pont
Meta Integration Repository (MIR) Métamodèle (se base sur le standard OMG CWM) |
"Système de fichiers OpenStack Swift Object Store - Nouveau pont Bêta" Métamodèle Système de fichiers (Fichier) |
Mapping des commentaires |
Attribut | Élément élémentaire de tableau, Champ, Attribut, Champ de tableau, Élément élémentaire, Champ à largeur fixe, Champ de partition | |
Comment | Comment | |
Name (Nom) | Name (Nom) | |
Position | Position, Offset | |
Classe | Élément de tableau, Élément de groupe, Élément de groupe de tableau, Objet de tableau, Élément, Objet, Feuille | |
Name (Nom) | Name (Nom) | |
PropertyElementTypeScope | UDP | |
Name (Nom) | Name (Nom) | |
Périmètre | Périmètre | |
PropertyType | UDP | |
DataType (TypeDeDonnées) | Data Type (Type de données) | |
DesignLevel | Niveau de conception | |
Name (Nom) | Name (Nom) | |
Position | Position | |
StoreModel | Fichier Cobol, Fichier Parquet, Fichier délimité, Fichier Avro, Fichier JSON, Collection, Fichier ORC, Fichier XML, Fichier Excel, Fichier, Fichier à largeur fixe | |
Name (Nom) | Name (Nom) | |
NativeType | Type | |
TypeValue | Nom de la condition | |
Name (Nom) | Name (Nom) | |
Valeur | Value (Valeur) |