MarsTalk | 使用Zeppelin和TiSpark进行数据分析

2022-08-11 14:31:26 浏览数 (1)

前言:

本文相当硬核,主要是Mars工作中需要用到的一些东东,反正我没看懂,需要的同学,对pingCAP及其产品有兴趣的同学,拿走不谢;看不懂的同学,没事周六的文章总归是说人话的...

本文主要介绍一下如何使用TiSpark和Zeppelin进行数据可视化分析。

首先介绍几个概念:

TiDB:一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。

TiSpark: Spark上访问TiDB的插件,可以进行复杂的OLAP查询,TiSpark支持将Spark算子下推到TiKV,极大加速了计算速度。

Apache Zeppelin: 一个让交互式数据分析变得可行的基于网页的notebook,Zeppelin提供了数据可视化的框架。

Step0: 部署TiSpark和Zeppelin

本地测试可以使用Docker一键部署,详见TiSpark with Zeppelin Docker Compose。

代码语言:javascript复制

git clone https://github.com/marsishandsome/tispark-with-zeppelin-docker-compose
cd tispark-with-zeppelin-docker-compose
./build.sh
./start.sh

Step1: 导入tpch测试数据

打开zeppelin web界面http://127.0.0.1,新建一个Notebook,并运行下面的命令将tpch测试数据导入到TiDB (%sh 表示执行引擎是/bin/sh)

代码语言:javascript复制

%sh
bash /opt/tispark-tests/loaddata.sh


Step2: 获取TiSpark版本


运行下面的语句获取TiSpark版本 (%spark表示执行引擎是spark)

代码语言:javascript复制
%spark
sc.getConf.get("spark.sql.extensions")
spark.sql("select ti_version()").show(false)

Step3: Select数据

运行下面的语句进行简单的select语句

代码语言:javascript复制

%spark
spark.sql("use tpch_test")
spark.sql("select count(*) from lineitem").show

Step4: 运行tpch01 sql并作图

运行下面的语句进行tpch01 query执行 (%sql表示执行引擎是spark sql)

代码语言:javascript复制

%sql
select
    l_returnflag,
    l_linestatus,
    sum(l_quantity) as sum_qty,
    sum(l_extendedprice) as sum_base_price,
    sum(l_extendedprice * (1 - l_discount)) as sum_disc_price,
    sum(l_extendedprice * (1 - l_discount) * (1   l_tax)) as sum_charge,
    avg(l_quantity) as avg_qty,
    avg(l_extendedprice) as avg_price,
    avg(l_discount) as avg_disc,
    count(*) as count_order
from
    lineitem
where
    l_shipdate <= date'1998-12-01' - interval '90' day
group by
    l_returnflag,
    l_linestatus
order by
    l_returnflag,
    l_linestatus

可以基于返回的数据,在zeppelin界面上进行进一步作图

Min:结束!就这么结束了,连个招呼都不打的!

这就是和钢铁直男一起做公众号的结果!

Schönes Wochenende!

0 人点赞