superset study day01 (本地启动superset项目)

文章目录

    • 什么是superset?
      • superset文档
    • superset开发环境搭建
      • superset后端环境
        • 1. 新建数据库
        • 2. 环境配置
        • 3. 修改py文件
        • 4. 迁移数据库
        • 5. 启动项目
      • superset 前端代码打包
      • 搭建完成,效果页面

什么是superset?

Apache Superset™ 是一个开源的现代数据探索和可视化平台。

Superset是一个现代化的数据探索和数据可视化平台。Superset 可以取代或增强许多团队的专有商业智能工具。Superset与各种数据源很好地集成。

Superset 提供:

  • 用于快速构建图表的无代码界面
  • 功能强大、基于 Web 的 SQL 编辑器,用于高级查询
  • 轻量级语义层,用于快速定义自定义维度和指标
  • 开箱即用,支持几乎任何 SQL 数据库或数据引擎
  • 各种精美的可视化来展示您的数据,从简单的条形图到地理空间可视化
  • 轻量级、可配置的缓存层,有助于减轻数据库负载
  • 高度可扩展的安全角色和身份验证选项
  • 用于编程定制的 API
  • 从头开始设计的云原生架构,旨在实现规模化

superset文档

github文档:
https://github.com/apache/superset
官方操作文档
https://superset.apache.org/
文档某些步骤可能跑不通流程, 应该是版本迭代太快没有及时更新流程.

superset开发环境搭建

获取superset代码:

git clone https://github.com/apache/superset.git

superset后端环境

环境:
python 3.9.1
mysql 8.0
redis

1. 新建数据库

名称: superset_test
字符集: utf8mb4
在这里插入图片描述

2. 环境配置
# 安装 python3.9.1# virtualenv创建虚拟环境
mkvirtualenv -p python  superset_test
workon superset_test# conda创建虚拟环境
conda create -n superset_test python=3.9.1 -y
conda env list
conda activate superset_test# 两种创建虚拟环境的任选一种# install 
pip install apache-superset -i https://pypi.douban.com/simple
pip install flask_session==0.5.0 -i https://pypi.douban.com/simple
pip install pymysql==1.1.0 -i https://pypi.douban.com/simple
pip install requests==2.31.0 -i https://pypi.douban.com/simple
pip install Pillow==10.0.0 -i https://pypi.douban.com/simple
pwd pip install -e F:\zhondiao\github_superset\superset
# F:\zhondiao\github_superset\superset是当前项目路径

在这里插入图片描述

3. 修改py文件

config.py:


SECRET_KEY = "Y2Nrtdtt0nrKrMteiB2E/kgSr40OZW/z5ZiOqxGiJpsw/8RBV+lbGCqF"SUPERSET_REDIS_HOST = "127.0.0.1"
SUPERSET_REDIS_PORT = "6379"
SUPERSET_REDIS_PASSWORD = ""
SUPERSET_REDIS_DB = 10SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/superset_test?charset=utf8mb4'WTF_CSRF_ENABLED = False
FAB_ADD_SECURITY_API = TrueRATELIMIT_STORAGE_URI = ("redis://:"+ SUPERSET_REDIS_PASSWORD +"@"+ SUPERSET_REDIS_HOST +":"+ SUPERSET_REDIS_PORT +"/"+ str(SUPERSET_REDIS_DB)
)

superset\superset\models\ dynamic_plugins.py:

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
from flask_appbuilder import Model
from sqlalchemy import Column, Integer, Text, Stringfrom superset.models.helpers import AuditMixinNullableclass DynamicPlugin(Model, AuditMixinNullable):id = Column(Integer, primary_key=True)name = Column(String(255), unique=True, nullable=False)# key corresponds to viz_type from static pluginskey = Column(String(255), unique=True, nullable=False)bundle_url = Column(String(255), unique=True, nullable=False)def __repr__(self) -> str:return str(self.name)

superset\superset\models\ sql_lab.py

# ...latest_query_id = Column(String(11), ForeignKey("query.client_id", ondelete="SET NULL"))
#    latest_query_id = Column(
#        Integer, ForeignKey("query.client_id", ondelete="SET NULL")
#    )# ...

superset\superset\tables\ models.py

catalog = sa.Column(sa.String(50))schema = sa.Column(sa.String(50))name = sa.Column(sa.String(50))# catalog = sa.Column(sa.Text)# schema = sa.Column(sa.Text)# name = sa.Column(sa.Text)

app.py

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.import logging
import os
from typing import Optionalfrom flask import Flaskfrom superset.initialization import SupersetAppInitializerlogger = logging.getLogger(__name__)def create_app(superset_config_module: Optional[str] = None) -> Flask:app = SupersetApp(__name__)try:# Allow user to override our config completelyconfig_module = superset_config_module or os.environ.get("SUPERSET_CONFIG", "superset.config")app.config.from_object(config_module)app_initializer = app.config.get("APP_INITIALIZER", SupersetAppInitializer)(app)app_initializer.init_app()return app# Make sure that bootstrap errors ALWAYS get loggedexcept Exception as ex:logger.exception("Failed to create app")raise exclass SupersetApp(Flask):pass# 本地测试
if __name__ == '__main__':superset_app = create_app()# print(superset_app.url_map)superset_app.run(host="0.0.0.0", port=5000, debug=True,)

superset\superset\migrations\ script.py.mako

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
"""${message}Revision ID: ${up_revision}
Revises: ${down_revision}
Create Date: ${create_date}"""# revision identifiers, used by Alembic.
revision = ${repr(up_revision)}
down_revision = ${repr(down_revision)}from alembic import op
import sqlalchemy as sa
import sqlalchemy_utils
${imports if imports else ""}def upgrade():${upgrades if upgrades else "pass"}def downgrade():${downgrades if downgrades else "pass"}

清空superset\superset\migrations\versions文件下所有的py文件

4. 迁移数据库
superset db upgradesuperset db migratesuperset db upgradesuperset fab create-adminsuperset init 

在这里插入图片描述
在这里插入图片描述
创建admin用户:
在这里插入图片描述

5. 启动项目

本次测试先运行app.py

Python app.py
在这里插入图片描述
在此之前,要打包前端代码,才能进去系统里

superset 前端代码打包

准备:
nodejs

git pull
cd superset-frontend
npm install  --registry=https://registry.npm.taobao.org    npm run build

搭建完成,效果页面

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/162445.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10个超好用的Python实用库推荐~

文章目录 前言1.Dash2. Pillow3. Colorama4. JmesPath5. Simplejson6. Emoji7. 进度条:progress和tqdm8. Homeassistant9. Python-dateutil10. Pygame关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包…

第 370 场 LeetCode 周赛题解

A 找到冠军 I 枚举求强于其他所有队的队 class Solution { public:int findChampion(vector<vector<int>> &grid) {int n grid.size();int res 0;for (int i 0; i < n; i) {int t 0;for (int j 0; j < n; j)if (j ! i)t grid[i][j];if (t n - 1) …

OpenCV检测圆(Python版本)

文章目录 示例代码示例结果调参 示例代码 import cv2 import numpy as np# 加载图像 image_path DistanceComparison/test_image/1.png image cv2.imread(image_path, cv2.IMREAD_COLOR)# 将图像转换为灰度 gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用高斯模糊消除…

【Web】在前端中,HTML<meta>标签

<meta>实例 <head><meta name"description" content"免费在线教程"><meta name"keywords" content"HTML,CSS,XML,JAVASCRIPT"><meta name"author" content"runoob"><meta char…

Macroscope安全漏洞检测工具简介

学习目标&#xff1a; 本介绍旨在帮助感兴趣者尽快了解 Macroscope&#xff0c;这是一款用于安全测试自动化和漏洞管理的企业工具。 全覆盖应用程序安全测试&#xff1a; 如下图所示&#xff0c;如果使用多种互补工具&#xff08;SAST/DAST/SCA 等&#xff09;来检测应用程序…

Prometheus接入AlterManager配置企业微信告警(基于K8S环境部署)

文章目录 一、创建企业微信机器人二、配置AlterManager告警发送至企业微信三、Prometheus接入AlterManager配置四、部署PrometheusAlterManager(放到一个Pod中)五、测试告警 注意&#xff1a;请基于 PrometheusGrafana监控K8S集群(基于K8S环境部署)文章之上做本次实验。 一、创…

PostgreSQL简介及安装步骤

PostgreSQL简介 PostgreSQL是一款开源的关系型数据库管理系统&#xff0c;具有强大的扩展性、高度的可定制性和可靠的稳定性&#xff0c;因此在企业级应用和开发领域中得到了广泛的应用。本文将介绍PostgreSQL的基本概念以及在各种操作系统上的安装步骤。 安装步骤 1. Window…

Azure 机器学习 - 使用Python SDK训练模型

目录 一、环境准备二、工作区限制三、什么是计算目标&#xff1f;四、本地计算机五、远程虚拟机六、Apache Spark 池七、Azure HDInsight八、Azure Batch九、Azure Databricks十、Azure Data Lake Analytics十一、Azure 容器实例十二、Kubernetes 了解如何用 SDK v1 将 Azure 计…

Python Slice函数:数据处理利器详解

引言&#xff1a; 在Python编程中&#xff0c;处理数据是一个非常常见且重要的任务。为了更高效地处理数据&#xff0c;Python提供了许多内置函数和方法。其中&#xff0c;slice()函数是一个非常强大且常用的工具&#xff0c;它可以帮助我们轻松地提取、操作和处理数据。无论是…

分页存储管理、分段存储管理、段页式存储管理、两级页表

目录: 分页存储管理 基本地址存储机构 具有快表的地址存储机构 两级页表 分段存储管理 段页式管理方式 分页存储管理(重点) 首先回顾,逻辑地址和物理地址. 为什么要引入分页存储管理? 把物理地址下,离散的各个小片都利用起来,也就是在逻辑地址中看似是连续存储的,实际上对应…

【RabbitMQ】 RabbitMQ 消息的延迟 —— 深入探索 RabbitMQ 的死信交换机,消息的 TTL 以及延迟队列

文章目录 一、死信交换机1.1 什么是死信和死信交换机1.2 死信交换机和死信队列的创建方式 二、消息的 TTL2.1 什么是消息的 TTL2.2 基于死信交换机和 TTL 实现消息的延迟 三、基于 DelayExchang 插件实现延迟队列3.1 安装 DelayExchang 插件3.2 DelayExchang 实现消息延迟的原理…

MPLAB X IDE 仿真打断点提示已中断的断点?

这种中间带裂缝的是无效断点。 原因可能与XC编译器的优化有关&#xff0c;最后生成的汇编与C语言并不是一一对应的(官方给的解释是效率高)。所以这一行C语言转换的汇编代码可能并不在这个位置&#xff0c;也可能与其它汇编合并后根本就没有 我的解决方法是把优化等级调到最低&a…