Cette rubrique explique comment connecter Hologres à Realtime Compute for Apache Flink afin de créer un tableau de bord d'analyse pour entrepôt de données en temps réel.
Prérequis
Hologres est activé et connecté à un outil de développement. Pour plus d'informations, consultez les pages Se connecter à HoloWeb et exécuter une requête.
-
Realtime Compute for Apache Flink est activé. Pour plus d'informations, consultez la page Activer Realtime Compute for Apache Flink.
RemarqueAssurez-vous que Realtime Compute for Apache Flink et Hologres se trouvent dans la même région et utilisent le même VPC et le même vSwitch.
DataV est activé. Pour plus d'informations, consultez les pages Activer le service DataV.
Contexte
Hologres est une solution d'analyse interactive en temps réel proposée par Alibaba Cloud. Il se connecte directement à Realtime Compute for Apache Flink via l'API HoloHub intégrée . Cette connexion permet des écritures et des requêtes de données en temps réel avec une concurrence élevée, tout en offrant des temps de réponse de l'ordre de la seconde.
Hologres est compatible avec PostgreSQL, ce qui vous permet de le connecter directement à des outils de business intelligence (BI) pour analyser et visualiser vos données.
Cette rubrique s'appuie sur un exemple de création d'un tableau de bord opérationnel en temps réel pour une boutique de commerce électronique. Le tableau de bord affiche des métriques telles que le trafic total, les visites par magasin, les ventes régionales et les produits les plus vendus.
Le schéma suivant illustre le pipeline de bout en bout pour la création d'un tableau de bord opérationnel en temps réel avec Hologres.
Les données source sont collectées et écrites en temps réel dans Realtime Compute for Apache Flink, où elles sont nettoyées et agrégées.
Les données traitées sont ensuite écrites en temps réel dans Hologres pour permettre des requêtes interactives.
Hologres se connecte à un tableau de bord DataV pour visualiser les métriques opérationnelles en temps réel.
Procédure
-
Obtenez les données source.
Récupérez les données source depuis DataHub ou d'autres journaux de service.
À des fins de démonstration, ce tutoriel génère les données directement depuis Realtime Compute for Apache Flink. Pour plus d'informations, reportez-vous à l'étape 3.
-
Créez une table de destination dans Hologres.
Utilisez HoloWeb pour créer une table destinée aux données en temps réel. Le schéma de la table doit correspondre aux champs et aux types de données de la table source. Pour plus d'informations, consultez la page Se connecter à HoloWeb et exécuter une requête. Les instructions SQL suivantes fournissent un exemple.
BEGIN; CREATE TABLE public.order_details ( "user_id" int8, "user_name" text, "item_id" int8, "item_name" text, "price" numeric(38,2), "province" text, "city" text, "ip" text, "longitude" text, "latitude" text, "sale_timestamp" timestamptz NOT NULL ); CALL SET_TABLE_PROPERTY('public.order_details','orientation', 'column'); CALL SET_TABLE_PROPERTY('public.order_details','clustering_key', 'sale_timestamp:asc'); CALL SET_TABLE_PROPERTY('public.order_details','segment_key', 'sale_timestamp'); CALL SET_TABLE_PROPERTY('public.order_details','bitmap_columns', 'user_name,item_name,province,city,ip,longitude,latitude'); CALL SET_TABLE_PROPERTY('public.order_details','dictionary_encoding_columns','user_name:auto,item_name:auto,province:auto,city:auto,ip:auto,longitude:auto,latitude:auto'); CALL SET_TABLE_PROPERTY('public.order_details','time_to_live_in_seconds', '3153600000'); CALL SET_TABLE_PROPERTY('public.order_details','distribution_key', 'user_id'); CALL SET_TABLE_PROPERTY('public.order_details','storage_format', 'orc'); COMMIT; Dans la console Realtime Compute for Apache Flink, téléchargez la ressource JAR du connecteur personnalisé ordergen. Pour plus d'informations, consultez la page Télécharger et utiliser un connecteur personnalisé.
-
Nettoyez les données à l'aide de Realtime Compute for Apache Flink.
Dans la console Realtime Compute for Apache Flink, créez une tâche pour nettoyer et agréger les données source. La tâche utilise ensuite l'API HoloHub pour écrire les données dans Hologres en temps réel. Pour plus d'informations, consultez la page Vue d'ensemble du développement de tâches. Les instructions SQL suivantes fournissent un exemple.
CREATE TEMPORARY TABLE source_table ( user_id BIGINT, user_name VARCHAR, item_id BIGINT, item_name VARCHAR, price numeric (38, 2), province VARCHAR, city VARCHAR, longitude VARCHAR, latitude VARCHAR, ip VARCHAR, sale_timestamp TIMESTAMP ) WITH ('connector' = 'ordergen'); CREATE TEMPORARY TABLE hologres_sink ( user_id BIGINT, user_name VARCHAR, item_id BIGINT, item_name VARCHAR, price numeric (38, 2), province VARCHAR, city VARCHAR, longitude VARCHAR, latitude VARCHAR, ip VARCHAR, sale_timestamp TIMESTAMP ) WITH ( 'connector' = 'hologres', 'dbname' = '<holo_db>', 'tablename' = '<receive_table>', 'username' = '<uid>', 'password' = '<pid>', 'endpoint' = '<host>' ); INSERT INTO hologres_sink SELECT user_id, user_name, item_id, item_name, price, province, city, longitude, latitude, ip, sale_timestamp FROM source_table;Le tableau suivant décrit les paramètres.
Paramètre
Description
holo_db
Nom de la base de données Hologres.
receive_table
Nom de la table de destination dans Hologres. Dans ce tutoriel, il s'agit de
public.order_details.uid
ID AccessKey de votre compte Alibaba Cloud.
pid
Secret AccessKey de votre compte Alibaba Cloud.
host
Nom de domaine de l'endpoint VPC de l'instance Hologres. Retrouvez ce nom de domaine dans la section Network Information de la page Instance Details de la console Hologres.
Sur la page Deployments de la console Realtime Compute for Apache Flink, démarrez la tâche et attendez que son statut passe à Running. Pour plus d'informations, consultez la page Démarrer une tâche.
-
Interrogez les données en temps réel dans Hologres.
Exécutez des requêtes dans Hologres pour analyser les données en temps réel selon différentes dimensions. Les instructions SQL suivantes servent d'exemples.
SELECT SUM(price) AS "GMV" FROM order_details ; SELECT COUNT(DISTINCT user_id) AS "UV" FROM order_details ; SELECT city AS "City", COUNT(DISTINCT user_id) AS "CustomerCount" FROM order_details GROUP BY "City" ORDER BY "CustomerCount" DESC limit 100; SELECT item_name AS "Product", SUM(price) AS "SalesAmount" FROM order_details GROUP BY "Product" ORDER BY "SalesAmount" DESC limit 100; SELECT to_char(sale_timestamp, 'MM-DD') AS "Date", SUM(price) AS "GMV" FROM order_details GROUP BY "Date" ORDER BY "GMV" DESC limit 100; -
Affichez le tableau de bord DataV en temps réel.
Créez un tableau de bord en temps réel en connectant directement les résultats des requêtes Hologres à DataV. Suivez les étapes ci-dessous :
-
Ajoutez une source de données.
Dans la console DataV, accédez à dans le volet de navigation de gauche. Sur la page Data Source, cliquez sur Add Source.
Dans le panneau Add Data Source, configurez les paramètres de la source de données Hologres .
Cliquez sur OK.
-
Créez le tableau de bord en temps réel.
Sélectionnez les composants nécessaires à votre tableau de bord et configurez leurs sources de données. Pour plus d'informations, consultez la page Vue d'ensemble.
Ce tutoriel utilise un graphique à colonnes basique, un carrousel, une carte plane basique et un panneau d'affichage défilant (ticker board). Les étapes suivantes utilisent le panneau d'affichage défilant comme exemple.
Configurez la source de données.
Configurez la bordure, la police et la couleur du panneau d'affichage défilant. L'aperçu du composant affiche en temps réel les décorations de bordure, le texte du titre et les valeurs numériques.
-
Affichez le tableau de bord en temps réel.
Après avoir configuré les composants du tableau de bord et les sources de données, vous pouvez ajouter des éléments décoratifs pour personnaliser l'apparence.
La partie gauche affiche en temps réel les visites de produits et les montants des ventes par ville.
La carte centrale affiche en temps réel l'emplacement de chaque commande, le montant total des ventes et le nombre total de visites.
La partie droite affiche en temps réel la part de marché des ventes et le classement des produits par ventes.
-