DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Big Data Zone»Connexion à Presto avec Superset
    Big Data Zone

    Connexion à Presto avec Superset

    octobre 14, 2021
    Connexion à Presto avec Superset
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    TL;DR

    Le surensemble fait référence à une connexion à une source de données distincte en tant que base de données. Un seul cluster Presto peut se connecter à plusieurs sources de données en configurant un catalogue Presto pour chaque source de données souhaitée. Par conséquent, pour établir une connexion de base de données Superset à une source de données particulière via Presto, vous devez spécifier le cluster et le catalogue Presto dans l’URI SQLAlchemy comme suit : presto://<presto-username>:<presto-password>@<presto-coordinator-url>:<http-server-port>/<catalog>.

    Superset et SQLAlchemy

    Superset est conçu comme une application Web Python Flask et exploite SQLAlchemy, une boîte à outils Python SQL, pour fournir une couche d’abstraction cohérente aux sources de données relationnelles. Superset utilise un URI SQLAlchemy cohérent comme chaîne de connexion pour une base de données Superset définie. Le schéma de l’URI est le suivant : dialect+driver://username:password@host:port/database. Nous allons déconstruire le dialect, driver, et database dans les sections suivantes.


    SQLAlchemy définit un dialecte en tant que système qu’il utilise pour communiquer avec les différentes bases de données spécifiques (par exemple, la saveur de SQL) et DB-API, des API Python de bas niveau pour parler à des sources de données relationnelles spécifiques. Une base de données Python DB-API conducteur est requis pour une source de données donnée. Par exemple, PyHive est un pilote DB-API pour se connecter à Presto. Il est possible pour un même dialecte de choisir entre plusieurs pilotes DB-API. Par exemple, le dialecte PostgreSQL peut prendre en charge les pilotes DB-API suivants : psycopg2, pg8000, psycop2cffi, un pygresql. En règle générale, un seul pilote DB-API est défini par défaut pour un dialecte et utilisé lorsqu’aucune DB-API explicite n’est spécifiée. Pour PostgreSQL, le pilote DB-API par défaut est psycopg2.

    Le terme database peut être déroutant car il est fortement chargé. Dans un scénario typique, une source de données donnée, telle que PostgeSQL, possède plusieurs regroupements logiques de tables appelés « bases de données ». D’une certaine manière, ces « bases de données » fournissent des espaces de noms pour les tables ; des tables portant le même nom peuvent exister dans deux « bases de données » différentes sans collision. À titre d’exemple, nous pouvons utiliser l’instance PostgreSQL disponible lors de l’installation locale de Superset avec Docker Compose.

    Dans cette instance de PostgreSQL, nous avons quatre bases de données : postgres, superset, template0, et template1.

    superset@localhost:superset> \l

    +-----------+----------+----------+------------+------------+-----------------------+
    | Name      | Owner    | Encoding | Collate    | Ctype      | Access privileges     |
    |-----------+----------+----------+------------+------------+-----------------------|
    | postgres  | superset | UTF8     | en_US.utf8 | en_US.utf8 | <null>                |
    | superset  | superset | UTF8     | en_US.utf8 | en_US.utf8 | <null>                |
    | template0 | superset | UTF8     | en_US.utf8 | en_US.utf8 | =c/superset           |
    |           |          |          |            |            | superset=CTc/superset |
    | template1 | superset | UTF8     | en_US.utf8 | en_US.utf8 | =c/superset           |
    |           |          |          |            |            | superset=CTc/superset |
    +-----------+----------+----------+------------+------------+-----------------------+
    

    Nous pouvons examiner le superset base de données et voir les tables de cette base de données.

    L’élément clé à retenir ici est qu’en fin de compte, une base de données Superset doit se résoudre en une collection de tables, quelle que soit la référence dans un dialecte particulier.

    superset@localhost:superset> c superset

    You are now connected to database "superset" as user "superset"

    Schema | Name                       | Type  | Owner    |
    |--------+----------------------------+-------+----------|
    | public | Clean                      | table | superset |
    | public | FCC 2018 Survey            | table | superset |
    | public | ab_permission              | table | superset |
    | public | ab_permission_view         | table | superset |
    | public | ab_permission_view_role    | table | superset |
    | public | ab_register_user           | table | superset |
    | public | ab_role                    | table | superset |
    | public | ab_user                    | table | superset |
    | public | ab_user_role               | table | superset |
    | public | ab_view_menu               | table | superset |
    | public | access_request             | table | superset |
    | public | alembic_version            | table | superset |
    | public | alert_logs                 | table | superset |
    | public | alert_owner                | table | superset |
    | public | alerts                     | table | superset |
    | public | annotation                 | table | superset |
    | public | annotation_layer           | table | superset |
    | public | bart_lines                 | table | superset |
    | public | birth_france_by_region     | table | superset |
    | public | birth_names                | table | superset |
    | public | cache_keys                 | table | superset |
    | public | channel_members            | table | superset |
    | public | channels                   | table | superset |
    | public | cleaned_sales_data         | table | superset |
    | public | clusters                   | table | superset |
    | public | columns                    | table | superset |
    | public | covid_vaccines             | table | superset |
    :

    Avec une compréhension des dialectes, des pilotes et des bases de données à notre actif, consolidons-la avec quelques exemples. Supposons que nous voulons créer une base de données Superset sur une source de données PostgreSQL et une base de données PostgreSQL particulière nommée mydatabase. Notre source de données PostgreSQL est hébergée sur pghost sur le port 5432 et nous nous connecterons en tant que sonny (le mot de passe est foobar). Voici trois URI SQLAlchemy que nous pourrions utiliser (en fait inspirés de la documentation SQLAlchemy) :

    1. postgresql+psycopg2://sonny:foobar@pghost:5432/mydatabase Nous spécifions explicitement le postgresql dialecte et psycopg2 conducteur.
    2. postgresql+pg8000://sonny:foobar@pghost:5432/mydatabase Nous utilisons le pg8000 conducteur.
    3. postgresql://sonny:foobar@pghost:5432/mydatabase Nous ne listons explicitement aucun pilote, et par conséquent, SQLAlchemy utilisera le pilote par défaut, qui est psycopg2 pour postgresql.

    Superset répertorie ses packages Python recommandés pour les pilotes de base de données dans la documentation publique.

    Bientôt Catalogues

    Étant donné que Presto peut se connecter à plusieurs sources de données, lors de la connexion à Presto en tant que base de données Superset définie, il est important de comprendre à quoi vous vous connectez réellement.

    Dans Presto, la notion équivalente d’une « base de données » (c’est-à-dire une collection logique de tables) est appelée un schéma. L’accès à un schéma spécifique (« base de données ») dans une source de données, est défini dans un catalogue.

    A titre d’exemple, la liste ci-dessous est la configuration de catalogue équivalente pour se connecter à l’exemple mydatabase Base de données PostgreSQL que nous avons décrite précédemment. Si nous interrogeions une table dans ce catalogue directement à partir de Presto, une table entièrement qualifiée serait spécifiée comme catalog.schema.table (par exemple select * from catalog.schema.table). Par conséquent, interroger le Clean le tableau serait select * from postgresql.mydatabase.Clean.

    connector.name=postgresql
    connection-url=jdbc:postgresql://pghost:5432/mydatabase
    connection-user=sonny
    connection-password=foobar


    Superset à Presto

    Pour en revenir à Superset, pour créer une base de données Superset pour se connecter à Presto, nous spécifions le dialecte Presto. Cependant, étant donné que Presto est l’intermédiaire vers une source de données sous-jacente, telle que PostgreSQL, le username et password nous devons fournir (et nous authentifier) ​​est le nom d’utilisateur et le mot de passe Presto. De plus, nous devons spécifier un catalogue Presto pour le database dans l’URI SQLAlchemy. À partir de là, Presto, via sa configuration de catalogue, s’authentifie auprès de la source de données de sauvegarde avec les informations d’identification appropriées (par ex. sonny et foobar ). Par conséquent, l’URI SQLAlchemy pour se connecter à Presto dans Superset est le suivant : presto://<presto-username>:<presto-password>@<presto-coordinator-url>:<http-server-port>/<catalog>


    Les http-server-port se réfère à la http-server.http.port configuration sur le coordinateur et les travailleurs (voir les propriétés de configuration de Presto) ; il est généralement défini sur 8080.

    Nouvelle interface utilisateur de connexion à la base de données Superset

    Dans Superset 1.3, il existe une version avec indicateur de fonctionnalité d’une nouvelle interface utilisateur de connexion à la base de données qui simplifie la connexion aux données sans construire l’URI SQLAlchemy. La nouvelle interface utilisateur de connexion à la base de données peut être activée dans config.py avec FORCE_DATABASE_CONNECTIONS_SSL = True (RP #14934). La nouvelle interface utilisateur peut également être consultée dans la documentation Superset.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.