030 大数据之BI工具Zepplin

Apache Zeppelin : Web-based notebook that enables data-driven, interactive data analytics and collaborative documents with SQL, Scala, Python, R and more.

Interpreters in Apache Zeppelin
In this section, we will explain about the role of interpreters, interpreters group and interpreter settings in Zeppelin. The concept of Zeppelin interpreter allows any language/data-processing-backend to be plugged into Zeppelin. Currently, Zeppelin supports many interpreters such as Scala ( with Apache Spark ), Python ( with Apache Spark ), SparkSQL, JDBC, Markdown, Shell and so on.

1、IDEA通过JDBC试连KyLin

pom.xml添加kylin-jdbc依赖

<dependencies>
      <dependency>
          <groupId>org.apache.kylin</groupId>
          <artifactId>kylin-jdbc</artifactId>
          <version>3.0.2</version>
      </dependency>
</dependencies>

编写Java试连KyLin的代码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class TestKylin {

    public static void main(String[] args) throws Exception {

        //Kylin_JDBC 驱动
        String KYLIN_DRIVER = "org.apache.kylin.jdbc.Driver";

        //Kylin_URL
        // 连接字符串:jdbc:kylin://ip地址:7070/项目名称(project)
        String KYLIN_URL = "jdbc:kylin://hadoop102:7070/gmall";

        //Kylin的用户名
        String KYLIN_USER = "ADMIN";

        //Kylin的密码
        String KYLIN_PASSWD = "KYLIN";

        //添加驱动信息
        Class.forName(KYLIN_DRIVER);

        //获取连接
        Connection connection = DriverManager.getConnection(KYLIN_URL, KYLIN_USER, KYLIN_PASSWD);

        //预编译SQL
        PreparedStatement ps = connection.prepareStatement("SELECT SUM(sku_num) FROM DWD_ORDER_DETAIL ");

        //执行查询
        ResultSet resultSet = ps.executeQuery();

        //遍历打印
        while (resultSet.next()) {
            System.out.println(resultSet.getInt(1));
        }
    }
}

2、安装Zepplin

解压zeppelin

[atguigu@hadoop102 software]$ tar -zxvf zeppelin-0.8.0-bin-all.tgz -C /opt/module/

改端口号:默认是8080,为避免冲突,修改为其他端口号

[atguigu@hadoop102 conf]$ mv zeppelin-site.xml.template zeppelin-site.xml
[atguigu@hadoop102 conf]$ cat zeppelin-site.xml 
<property>
  <name>zeppelin.server.port</name>
  <!--改默认端口号8080为8000-->
  <value>8000</value>
  <description>Server port.</description>
</property>

启动zeppelin

[atguigu@hadoop102 zeppelin-0.8.0-bin-all]$ bin/zeppelin-daemon.sh start

登录网页:http://hadoop102:8000

3、通过Zepplin的KyLin解释器连接KyLin

配置Kylin解释器信息
在这里插入图片描述

4、通过Zepplin的python解释器连接KyLin

配置Python数据可视化环境

# conda创建python3.6环境
[atguigu@hadoop102 software]$ conda create --name python36 python=3.6
(python36) [atguigu@hadoop102 software]$ conda activate python36
# 安装kylinpy及绘图相关的包
(python36) [atguigu@hadoop102 software]$ pip install --upgrade kylinpy
(python36) [atguigu@hadoop102 software]$ pip install SQLAlchemy
(python36) [atguigu@hadoop102 software]$ pip install pandas
(python36) [atguigu@hadoop102 software]$ pip install matplotlib
(python36) [atguigu@hadoop102 software]$ conda deactivate

配置Python解释器信息
在这里插入图片描述
通过Python连接Kylin

import sys
import sqlalchemy as sa
import pandas as pd
import matplotlib.pyplot as plt

print(sys.version) 
print(sys.version_info)

# 配置kylin连接信息
kylin_engine = sa.create_engine('kylin://ADMIN:KYLIN@hadoop102:7070/gmall?version=v1')

# 编写SQL语句
sql = 'SELECT SUM(sku_num) FROM DWD_ORDER_DETAIL'

# 执行sql语句,获得执行结果
# results = kylin_engine.execute(sql)

# 执行sql语句,获得执行结果,并将结果存储到pandas
dataframe = pd.read_sql(sql, kylin_engine)

# 打印结果
print(dataframe)

# 将结果绘图
dataframe.plot(kind='pie')
plt.show()

5、pandas与matplotlib绘图入门

人人都能看懂的Matplotlib绘图原理

matplotlib.pyplot is a collection of functions that make matplotlib work like MATLAB. Each pyplot function makes some change to a figure: e.g., creates a figure, creates a plotting area (Axes) in a figure, plots some lines in a plotting area, decorates the plot (title、Axis、label) with labels, etc.

In matplotlib.pyplot various states are preserved across function calls, so that it keeps track of things like the current figure and plotting area, and the plotting functions are directed to the current axes (please note that “axes” here and in most places in the documentation refers to the axes part of a figure and not the strict mathematical term for more than one axis).

import matplotlib.pyplot as plt
# plt是接口
print(type(plt),plt)
<class 'module'> <module 'matplotlib.pyplot' from 'C:\\Program Files\\Anaconda3\\lib\\site-packages\\matplotlib\\pyplot.py'>
fig, ax = plt.subplots()
# fig=figure, ax=Axes 是对象
print(type(fig),fig)
print(type(ax),ax)
<class 'matplotlib.figure.Figure'> Figure(432x288)
<class 'matplotlib.axes._subplots.AxesSubplot'> AxesSubplot(0.125,0.125;0.775x0.755)
# 为什么plt没有指定画布figure和区域Axes也能作图plot ?
"""
因为matplotlib默认在【最近创建】的画布上绘制,而当你没有指定区域,告诉它去画图,
他就会自动去生成一个Axes去绘制,进一步没有画布,也会自动去创建一个Figure,也称为隐式绘制。
""" 
plt.bar([1,2,3],[4,5,6])
# 当有多个Axes时,直接使用plt绘图只能操作最近一个创建的Axes
# 此时使用plt.subplots创建Axes数组,通过Axes元素单个操作每一个Axes
fig, axes = plt.subplots(1,3,figsize=(16,6))
ax1 = axes[0]
ax2 = axes[1]
ax3 = axes[2]
 
ax2.barh([1,2,3,4,5],[1,2,3,4,5])

plt.show()
plt.figure(figsize=(16,6))
ax1 = plt.subplot(1,3,1)

ax2 = plt.subplot(1,3,2)
# plt.bar得紧跟ax2才能操作ax2
plt.bar([1,2,3,4,5],[1,2,3,4,5])

# plt.subplots一次创建多个Axes,plt.subplot一次创建一个并每次指定Axes排列规则
ax3 = plt.subplot(1,3,3)

# ax1的Axes的plot非必须紧跟ax1
ax1.plot([1,2,3,4,5],[1,2,3,4,5])

plt.show()
fig = plt.figure(figsize=(16,6))
# plt.subplot、fig.add_subplot分别是通过pyplot接口、figure对象创建Axes
ax4 = fig.add_subplot(121)
ax4.plot([1,2,3,4,5],[1,2,3,4,5])
ax5 = fig.add_subplot(122)
ax5.plot([1,2,3,4,5],[1,2,3,4,5])

plt.show()

pandas.DataFrame和pandas.Series可以设置matplotlib axes object, default None
pandas.DataFrame.plot
pandas.Series.plot
matplotlib.axes

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
⼤数据⼯程师学习计划 申明:本⽂旨在为普通程序员(Java程序员最佳)提供⼀个⼊门级别的⼤数据技术学习路径,不适⽤于⼤数据⼯程师的进阶学习,也不适⽤ 于零编程基础的同学。 前⾔ ⼀、背景介绍 本⼈⽬前是⼀名⼤数据⼯程师,项⽬数据50T,⽇均数据增长20G左右,个⼈是从Java后端开发,经过3个⽉的业余⾃学成功转型⼤数据⼯ 程师。 ⼆、⼤数据介绍 ⼤数据本质也是数据,但是⼜有了新的特征,包括数据来源⼴、数据格式多样化(结构化数据、⾮结构化数据、Excel⽂件、⽂本⽂件 等)、数据量⼤(最少也是TB级别的、甚⾄可能是PB级别)、数据增长速度快等。 如果你对⼤数据开发感兴趣,想系统学习⼤数据的话,可以加⼊⼤数据技术学习交流扣群:数字4583+数字45782,私信管理员即可免费 领取开发⼯具以及⼊门学习资料 针对以上主要的4个特征我们需要考虑以下问题: 数据来源⼴,该如何采集汇总?对应出现了Sqoop,Cammel,Datax等⼯具。 数据采集之后,该如何存储?对应出现了GFS,HDFS,TFS等分布式⽂件存储系统。 由于数据增长速度快,数据存储就必须可以⽔平扩展。 数据存储之后,该如何通过运算快速转化成⼀致的格式,该如何快速运算出⾃⼰想要的结果? 对应的MapReduce这样的分布式运算框架解决了这个问题;但是写MapReduce需要Java代码量很⼤,所以出现了Hive,Pig等将SQL转 化成MapReduce的解析引擎; 普通的MapReduce处理数据只能⼀批⼀批地处理,时间延迟太长,为了实现每输⼊⼀条数据就能得到结果,于是出现了Storm/JStorm这 样的低时延的流式计算框架; 但是如果同时需要批处理和流处理,按照如上就得搭两个集群,Hadoop集群(包括HDFS+MapReduce+Yarn)和Storm集群,不易于 管理,所以出现了Spark这样的⼀站式的计算框架,既可以进⾏批处理,⼜可以进⾏流处理(实质上是微批处理)。 ⽽后Lambda架构,Kappa架构的出现,⼜提供了⼀种业务处理的通⽤架构。 为了提⾼⼯作效率,加快运速度,出现了⼀些辅助⼯具: Ozzie,azkaban:定时任务调度的⼯具。 Hue,Zepplin:图形化任务执⾏管理,结果查看⼯具。 Scala语⾔:编写Spark程序的最佳语⾔,当然也可以选择⽤Python。 Python语⾔:编写⼀些脚本时会⽤到。 Allluxio,Kylin等:通过对存储的数据进⾏预处理,加快运算速度的⼯具。 以上⼤致就把整个⼤数据⽣态⾥⾯⽤到的⼯具所解决的问题列举了⼀遍,知道了他们为什么⽽出现或者说出现是为了解决什么问题,进⾏学 习的时候就有的放⽮了。 正⽂ ⼀、⼤数据相关⼯作介绍 ⼤数据⽅向的⼯作⽬前主要分为三个主要⽅向: ⼤数据⼯程师 数据分析师 ⼤数据科学家 其他(数据挖掘等) ⼆、⼤数据⼯程师的技能要求 附上⼤数据⼯程师技能图: 必须掌握的技能11条 Java⾼级(虚拟机、并发) Linux 基本操作 Hadoop(HDFS+MapReduce+Yarn ) HBase(JavaAPI操作+Phoenix ) Hive(Hql基本操作和原理理解) Kafka Storm/JStorm Scala Python Spark (Core+sparksql+Spark streaming ) 辅助⼩⼯具(Sqoop/Flume/Oozie/Hue等) ⾼阶技能6条 机器学习算法以及mahout库加MLlib R语⾔ Lambda 架构 Kappa架构 Kylin Alluxio 三、学习路径 假设每天可以抽出3个⼩时的有效学习时间,加上周末每天保证10个⼩时的有效学习时间; 3个⽉会有(213+4210)3=423⼩时的学习时间。 第⼀阶段(基础阶段) 1)Linux学习(跟鸟哥学就ok了)-----20⼩时 Linux操作系统介绍与安装。 Linux常⽤命令。 Linux常⽤软件安装。 Linux⽹络。 防⽕墙。 Shell编程等。 2)Java ⾼级学习(《深⼊理解Java虚拟机》、《Java⾼并发实战》)---30⼩时 掌握多线程。 掌握并发包下的队列。 了解JMS。 掌握JVM技术。 掌握反射和动态代理。 3)Zookeeper学习 Zookeeper分布式协调服务介绍。 Zookeeper集群的安装部署。 Zookeeper数据结构、命令。 Zookeeper的原理以及选举机制。 第⼆阶段(攻坚阶段) 4)Hadoop (《Hadoop 权威指南》)---80⼩时 HDFS HDFS的概念和特性。 HDFS的shell操作。 HDFS的⼯作机制。 HDFS的Java应⽤开发。 MapReduce 运⾏WordCount⽰例程序。 了解MapReduce内部

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值