À partir de la version 1.3.26, Hologres prend en charge la lecture et l'écriture dans OSS-HDFS. Cette rubrique explique comment utiliser Data Lake Formation (DLF) pour accéder aux données d'un lac de données OSS-HDFS.
Contexte
OSS-HDFS (JindoFS) est un service de stockage de lac de données natif du cloud. Par rapport à OSS natif, OSS-HDFS s'intègre parfaitement aux moteurs de calcul de l'écosystème Hadoop et offre de meilleures performances dans les scénarios ETL hors ligne classiques utilisant Hive et Spark. Pour plus d'informations sur OSS-HDFS, consultez Présentation d'OSS-HDFS. Pour les données stockées dans OSS-HDFS, Hologres utilise DLF pour la gestion des métadonnées et JindoSDK pour l'accès direct aux données et la rétroécriture. La fonctionnalité de rétroécriture prend actuellement en charge les tables aux formats ORC, Parquet, CSV et SequenceFile. Pour savoir comment utiliser DLF pour lire et écrire dans OSS, consultez Accélérer l'accès aux données d'un lac de données OSS à l'aide de DLF.
Prérequis
Activez Data Lake Formation (DLF). Pour plus d'informations, consultez Démarrage rapide. Pour la liste des régions prises en charge, consultez Régions et endpoints pris en charge.
Activez OSS-HDFS et préparez vos données. Pour plus d'informations, consultez Activer OSS-HDFS.
Activez la fonctionnalité d'accélération du lac de données pour votre instance Hologres. Pour plus d'informations, consultez Configuration de l'environnement.
Procédure
-
Repérez l'endpoint du bucket OSS-HDFS.
Configurez l'endpoint du service OSS-HDFS dans Hologres. Vous trouverez cet endpoint dans la console OSS, sur la page de présentation du bucket pour lequel OSS-HDFS est activé.
Dans la section Access Port, repérez la valeur de la colonne Bucket Endpoint correspondant à la ligne HDFS Service. Le format de l'endpoint est similaire à
xxx.cn-hangzhou.oss-dls.aliyuncs.com. -
Créez un serveur étranger et configurez ses détails de connexion.
ImportantSi vous devez accéder aux données de plusieurs environnements, par exemple des données situées à la fois dans OSS-HDFS et dans OSS standard, configurez un serveur étranger distinct pour chaque source de données. Pour une table étrangère stockée dans OSS-HDFS, créez un serveur étranger dédié et définissez son option oss_endpoint sur l'endpoint OSS-HDFS. Lors de l'importation ou de la création de la table étrangère, spécifiez ce serveur. De même, pour une table étrangère mappant des données dans OSS standard, créez un autre serveur étranger et définissez son oss_endpoint sur l'endpoint OSS correspondant.
Après avoir repéré l'endpoint du bucket, exécutez les instructions suivantes dans Hologres pour configurer les endpoints pour DLF et OSS :
CREATE EXTENSION IF NOT EXISTS dlf_fdw; CREATE SERVER IF NOT EXISTS <servername> FOREIGN data wrapper dlf_fdw options ( dlf_region 'cn-<region>', dlf_endpoint 'dlf-share.cn-<region>.aliyuncs.com', oss_endpoint '<bucket_name>.cn-<region>.oss-dls.aliyuncs.com' -- The OSS-HDFS bucket endpoint );Le tableau suivant décrit les paramètres.
Paramètre
Description
Exemple
servername
Un nom de serveur personnalisé.
dlf_server
dlf_region
L'ID de région de votre service DLF.
Pour la liste des régions prises en charge, consultez Régions et endpoints pris en charge.
cn-beijing
dlf_endpoint
-
Pour de meilleures performances, nous vous recommandons d'utiliser un endpoint interne pour votre service DLF. Pour la liste des régions prises en charge, consultez Régions et endpoints pris en charge.
-
Si vous devez accéder aux données entre différentes régions, utilisez un endpoint public.
ImportantL'utilisation d'un endpoint public entraîne des frais réseau et peut affecter les performances. Pour plus d'informations sur les frais réseau, consultez Présentation de la facturation.
dlf-share.cn-beijing.aliyuncs.comoss_endpoint
L'endpoint OSS-HDFS obtenu à l'étape 1. OSS-HDFS prend uniquement en charge l'accès via le réseau interne, ce qui signifie que l'accès interrégional n'est pas pris en charge.
RemarquePour le stockage OSS standard, nous vous recommandons d'utiliser un endpoint OSS interne pour de meilleures performances. Pour interagir avec Hologres et DLF entre différentes régions, utilisez un endpoint public. Pour plus d'informations, consultez Accéder à OSS via IPv6.
bucket_nametest.cn-hangzhou.oss-dls.aliyuncs.com -
-
Créez une table étrangère pour lire et écrire dans OSS-HDFS.
-
Créer une table unique : Créez une table étrangère dans le schéma
publicde votre instance Hologres qui mappe la table de métadonnéesdlf_oss_testdans la base de métadonnées DLFdlfpro.-- Method 1 CREATE FOREIGN TABLE dlf_oss_test ( id text, pt text ) SERVER dlf_server -- The foreign server that you created. options ( schema_name 'dlfpro', table_name 'dlf_oss_test' ); -- Method 2 IMPORT FOREIGN SCHEMA dlfpro LIMIT TO ( dlf_oss_test ) FROM SERVER dlf_server INTO public options (if_table_exist 'update'); -
Créer des tables en masse : Mappez toutes les tables de la base de métadonnées DLF
dlfprovers le schémapublicdans Hologres. Cela crée des tables étrangères correspondantes dans Hologres portant les mêmes noms que les tables sources.-
Importer une base de données entière :
IMPORT FOREIGN SCHEMA dlfpro FROM SERVER dlf_server INTO public options (if_table_exist 'update'); -
Importer plusieurs tables :
IMPORT FOREIGN SCHEMA dlfpro ( table1, table2, tablen ) FROM SERVER dlf_server INTO public options (if_table_exist 'update');
-
-
-
Interrogez les données.
Après avoir créé la table étrangère, vous la trouverez dans le schéma correspondant dans Hologres ou dans le répertoire de structure de table dans HoloWeb. Interrogez directement cette table étrangère pour lire les données dans OSS. Pour les tables étrangères aux formats CSV, Parquet ou ORC, vous pouvez également écrire des données dans la table.
-
Interroger une table non partitionnée
SELECT * FROM dlf_oss_test; -
Interroger une table partitionnée
SELECT * FROM <partition_table> where dt = '2013';
-
Pour plus d'informations, consultez Procédure.