赞
踩
Apache Superset是一个开源的、现代的、轻量级BI分析工具,由Python
语言为主,能够对接多种数据源、拥有丰富的图表展示形式、支持自定义仪表盘,且拥有友好的用户界面,十分易用。
报表工具是数据展示工具,而BI(商业智能)是数据分析工具。
由于Superset能够对接常用的大数据分析工具,如Hive、Kylin、Druid等,且支持自定义仪表盘,故可作为数仓的可视化工具。
注意:常用的也还有其它技术架构,如ELK架构,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。 kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
Apache Superset
使用层面主要分为以下个部分;
开源的可视化分析(BI)工具
优点:
缺点:
superset现在支持的所有数据库或分析引擎:
Database | PyPI package | Connection String |
---|---|---|
Amazon Athena | pip install "PyAthenaJDBC>1.0.9 , pip install "PyAthena>1.2.0 | awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{ |
Amazon DynamoDB | pip install "PyDynamoDB>=0.4.2 | dynamodb://{access_key_id}:{secret_access_key}@dynamodb.{region_name}.amazonaws.com?connector=superset |
Amazon Redshift | pip install sqlalchemy-redshift | redshift+psycopg2://<userName>:<DBPassword>@<AWS End Point>:5439/<Database Name> |
Apache Drill | pip install sqlalchemy-drill | drill+sadrill:// For JDBC drill+jdbc:// |
Apache Druid | pip install pydruid | druid://<User>:<password>@<Host>:<Port-default-9088>/druid/v2/sql |
Apache Hive | pip install pyhive | hive://hive@{hostname}:{port}/{database} |
Apache Impala | pip install impyla | impala://{hostname}:{port}/{database} |
Apache Kylin | pip install kylinpy | kylin://<username>:<password>@<hostname>:<port>/<project>?<param1>=<value1>&<param2>=<value2> |
Apache Pinot | pip install pinotdb | pinot://BROKER:5436/query?server=http://CONTROLLER:5983/ |
Apache Solr | pip install sqlalchemy-solr | solr://{username}:{password}@{hostname}:{port}/{server_path}/{collection} |
Apache Spark SQL | pip install pyhive | hive://hive@{hostname}:{port}/{database} |
Ascend.io | pip install impyla | ascend://{username}:{password}@{hostname}:{port}/{database}?auth_mechanism=PLAIN;use_ssl=true |
Azure MS SQL | pip install pymssql | mssql+pymssql://UserName@presetSQL:TestPassword@presetSQL.database.windows.net:1433/TestSchema |
Big Query | pip install sqlalchemy-bigquery | bigquery://{project_id} |
ClickHouse | pip install clickhouse-connect | clickhousedb://{username}:{password}@{hostname}:{port}/{database} |
CockroachDB | pip install cockroachdb | cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable |
Dremio | pip install sqlalchemy_dremio | dremio://user:pwd@host:31010/ |
Elasticsearch | pip install elasticsearch-dbapi | elasticsearch+http://{user}:{password}@{host}:9200/ |
Exasol | pip install sqlalchemy-exasol | exa+pyodbc://{username}:{password}@{hostname}:{port}/my_schema?CONNECTIONLCALL=en_US.UTF-8&driver=EXAODBC |
Google Sheets | pip install shillelagh[gsheetsapi] | gsheets:// |
Firebolt | pip install firebolt-sqlalchemy | firebolt://{username}:{password}@{database} or firebolt://{username}:{password}@{database}/{engine_name} |
Hologres | pip install psycopg2 | postgresql+psycopg2://<UserName>:<DBPassword>@<Database Host>/<Database Name> |
IBM Db2 | pip install ibm_db_sa | db2+ibm_db:// |
IBM Netezza Performance Server | pip install nzalchemy | netezza+nzpy://<UserName>:<DBPassword>@<Database Host>/<Database Name> |
MySQL | pip install mysqlclient | mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name> |
Oracle | pip install cx_Oracle | oracle:// |
PostgreSQL | pip install psycopg2 | postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name> |
Trino | pip install trino | trino://{username}:{password}@{hostname}:{port}/{catalog} |
Presto | pip install pyhive | presto:// |
SAP Hana | pip install hdbcli sqlalchemy-hana or pip install apache-superset[hana] | hana://{username}:{password}@{host}:{port} |
Snowflake | pip install snowflake-sqlalchemy | snowflake://{user}:{password}@{account}.{region}/{database}?role={role}&warehouse={warehouse} |
SQLite | No additional library needed | sqlite:// |
SQL Server | pip install pymssql | mssql+pymssql:// |
Teradata | pip install teradatasqlalchemy | teradatasql://{user}:{password}@{host} |
TimescaleDB | pip install psycopg2 | postgresql://<UserName>:<DBPassword>@<Database Host>:<Port>/<Database Name> |
Vertica | pip install sqlalchemy-vertica-python | vertica+vertica_python://<UserName>:<DBPassword>@<Database Host>/<Database Name> |
YugabyteDB | pip install psycopg2 | postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name> |
Superset官网地址:http://superset.apache.org/
Superset是由Python语言编写的Web应用,要求Python3.7的环境。
conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同Python版本的软件包及其依赖,并能够在不同的Python环境之间切换,Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等,Miniconda包括Conda、Python。
此处,我们不需要如此多的工具包,故选择MiniConda。
(1)下载Miniconda(Python3版本)
下载地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
(2)安装Miniconda
执行以下命令进行安装,并按照提示操作,直到安装完成。
[atguigu@hadoop102 lib]$ bash Miniconda3-latest-Linux-x86_64.sh
在安装过程中,出现以下提示时,可以指定安装路径
出现以下字样,即为安装完成
Thank you for installing Minicoda3!
(3)加载环境变量配置文件,使之生效
[atguigu@hadoop102 lib]$ source ~/.bashrc
(4)取消激活base环境
Miniconda安装完成后,每次打开终端都会激活其默认的base环境,我们可通过以下命令,禁止激活默认base环境。
[atguigu@hadoop102 lib]$ conda config --set auto_activate_base false
(1)配置conda国内镜像
(base) [atguigu@hadoop102 ~]$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
(base) [atguigu@hadoop102 ~]$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
(base) [atguigu@hadoop102 ~]$ conda config --set show_channel_urls yes
(2)创建Python3.7环境
(base) [atguigu@hadoop102 ~]$ conda create --name superset python=3.7
说明:conda环境管理常用命令:
(3)激活superset环境
(base) [atguigu@hadoop102 ~]$ conda activate superset
说明:退出当前环境
(superset) [atguigu@hadoop102 ~]$ conda deactivate
安装Superset之前,需安装以下所需依赖:
(superset) [atguigu@hadoop102 ~]$ sudo yum install -y gcc gcc-c++ libffi-devel python-devel python-pip python-wheel python-setuptools openssl-devel cyrus-sasl-devel openldap-devel
(1)安装(更新)setuptools和pip
(superset) [atguigu@hadoop102 ~]$ pip install --upgrade setuptools pip -i https://pypi.douban.com/simple/
**说明:**pip是python的包管理工具,可以和centos中的yum类比
(2)安装Supetset
(superset) [atguigu@hadoop102 ~]$ pip install apache-superset -i https://pypi.douban.com/simple/
说明:-i的作用是指定镜像,这里选择国内镜像
注:如果遇到网络错误导致不能下载,可尝试更换镜像
(superset) [atguigu@hadoop102 ~]$ pip install apache-superset --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple
(3)初始化Supetset数据库
(superset) [atguigu@hadoop102 ~]$ superset db upgrade
(4)创建管理员用户
(superset) [atguigu@hadoop102 ~]$ export FLASK_APP=superset
(superset) [atguigu@hadoop102 ~]$ superset fab create-admin
指定用户名和密码
**说明:**flask是一个python web框架,Superset使用的就是flask
(5)Superset初始化
(superset) [atguigu@hadoop102 ~]$ superset init
gunicorn是一个Python Web Server,可以和java中的TomCat类比。
(superset) [atguigu@hadoop102 ~]$ pip install gunicorn -i https://pypi.douban.com/simple/
(1)确保当前conda环境为superset
(2)启动
(superset) [atguigu@hadoop102 ~]$ gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 "superset.app:create_app()" --daemon
说明:
(3)登录Superset
访问http://hadoop102:8787,并使用前面创建的管理员账号进行登录。
停掉gunicorn进程
(superset) [atguigu@hadoop102 ~]$ ps -ef | awk '/superset/ && !/awk/{print $2}' | xargs kill -9
退出superset环境
(superset) [atguigu@hadoop102 ~]$ conda deactivate
(1)创建superset.sh文件
[atguigu@hadoop102 bin]$ vim superset.sh
内容如下
#!/bin/bash superset_status(){ result=`ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | wc -l` if [[ $result -eq 0 ]]; then return 0 else return 1 fi } superset_start(){ source ~/.bashrc superset_status >/dev/null 2>&1 if [[ $? -eq 0 ]]; then conda activate superset ; gunicorn --workers 5 --timeout 120 --bind hadoop102:8787 --daemon 'superset.app:create_app()' else echo "superset正在运行" fi } superset_stop(){ superset_status >/dev/null 2>&1 if [[ $? -eq 0 ]]; then echo "superset未在运行" else ps -ef | awk '/gunicorn/ && !/awk/{print $2}' | xargs kill -9 fi } case $1 in start ) echo "启动Superset" superset_start ;; stop ) echo "停止Superset" superset_stop ;; restart ) echo "重启Superset" superset_stop superset_start ;; status ) superset_status >/dev/null 2>&1 if [[ $? -eq 0 ]]; then echo "superset未在运行" else echo "superset正在运行" fi esac
(2)加执行权限
[atguigu@hadoop102 bin]$ chmod +x superset.sh
(3)测试
启动superset
[atguigu@hadoop102 bin]$ superset.sh start
停止superset
[atguigu@hadoop102 bin]$ superset.sh stop
(1)安装依赖
(superset) [atguigu@hadoop102 ~]$ conda install mysqlclient
说明:对接不同的数据源,需安装不同的依赖,以下地址为官网说明
https://superset.apache.org/docs/databases/installing-database-drivers
(2)重启Superset
(superset) [atguigu@hadoop102 ~]$ superset.sh restart
(3)数据源配置
1)Database配置
**Step1:**点击Data/Databases
Step2:点击+DATABASE
**Step3:**点击填写Database及SQL Alchemy URI
注:SQL Alchemy URI编写规范:mysql://用户名:密码@主机名:端口号/数据库名称
此处填写:
mysql://root:123456@hadoop102:3306/gmall_report?charset=utf8
**Step4:**点击Test Connection,出现“Connection looks good!”提示即表示连接成功
**Step5:**点击ADD
2)Table配置
Step1:点击Data/Datasets
Step2:点击Data/ Datasets
Step3:配置Table
(1)点击Dashboards/+DASHBOARDS
(2)命名并保存
(1)点击Charts/+CHART
(2)选则数据源及图表类型
(3)选择何使的图表类型
(4)创建图表
(5)按照说明配置图表
(6)点击“Run Query”
(7)如配置无误,可出现以下图标
(8)命名该图表,并保存至仪表盘
(1)打开仪表盘,点击编辑按钮
(2)调整图表大小以及图表盘布局
(3)点击下图中箭头,可调整仪表盘自动刷新时间
SQL Lab其实就是一个数据库查询客户端,利用SQL语句对数据库的表,字段模型进行查询探索,同时支持智能补全,当然SQL Lab的查询结果也可以直接EXPLORE到Charts(图表),作为数据可视化的数据源。
如图,SQL Lab有三个选项,三个选项的功能如下:
点击SQL Editor进入图中的SQL查询探索,左侧上方是配置好的数据库连接名和选择的数据库,左侧下方是将要用到的表及字段模型;右侧上方是写SQL语句的地方,支持RUN(查询),RUN SELECTION(查询鼠标选择局部语句),SAVE(保存),SHARE(分享)等,右下方是数据结果,支持EXPLORE到Charts(图表)可视化,.CSV下载,CLIPBOARD(复制到剪贴板)。
Apache Superset中的安全性由Flask AppBuilder(FAB)处理,FAB是一个构建在Flask之上的应用程序开发框架。FAB提供身份验证、用户管理、权限和角色,可以查看其相关文档。
Apache Superset默认提供了不同的角色,每种角色拥有的权限不同,在运行superset init命令时,与每个角色关联的权限将重新同步到其原始值,不建议更改与每个角色关联的权限(例如,通过删除或添加权限),支持admin再自建角色类型,指定想要的权限,默认的角色及权限如下:
更多的角色权限可以查看官网Apache Superset Security,或者点开图中的编辑角色查看,尽量别改默认角色的权限。
同时Apache Superset也支持管理员自己新增角色,如图,新建角色并指定角色权限。
新建、编辑用户指定角色,用户的权限是绑定在角色里面的,一个用户可以有多个角色,配置信息如图:
操作日志记录的是在你的Superset平台上不同用户的行为日志,如图:
菜单栏最右侧的个人信息,主要是包含:
用户信息
:修改用户姓名,重置密码;退出
:回到登录主界面;版本
:目前您安装的Superset版本信息。作为Apache的顶级项目,自然是运用于全球的,支持世界上一些通用的语言 ,选择一款你最喜欢的即可。
针对仪表盘,图表渲染加入自己想要的风格和模板,实际运用的用的不多。
+ NEW
菜单栏的+ NEW
其实就是给最通用的三个模块SQL Query、图表、看板(仪表盘)
的一个快捷方式,此三者的用法就不在累赘了。
(1)配置Table
(2)配置Chart
(1)配置Table
(2)配置Chart
(1)metabase
https://github.com/metabase/metabase
目前不支持ClickHouse
(2)Redash
https://github.com/getredash/redash
支持ClickHouse
美观程度相比Superset不够精美
支持简单的报警规则
可以把Dashboard分享出去
支持的图表类型有限
(3)Zeppelin
https://github.com/apache/zeppelin
来自Apache项目
支持ClickHouse
炫酷程度2颗星
Zeppelin更像是一个notebook,而不是一个单纯的BI工具
(4)SQLPad
https://github.com/rickbergfalk/sqlpad
(5)Franchise
https://github.com/HVF/franchise
(6)CBoard
https://github.com/yzhang921/CBoard
国人开发的一款可视化工具
交互设计的不错,但是实际用起来感觉很奇怪
Java系
(7)Davinci
宜信开发的达芬奇,也是Java系
功能还是比较全面的,只是在国内还没有大范围的使用
https://github.com/edp963/davinci
(8)商业:
FineBI
Tableau
其他可视化资源:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。