版 本
Apache Zeppelin:0.9.0
   Spark 2.3.3
   关于Apache Zeppelin-0.9.0的安装以及配置Spark-2.3.3请参考博客Apache Zeppelin-0.9.0安装配置Spark-2.3.3,这里不再重复累赘;
创建Note
打开zeppelin网页端口,登录后,可以通过图1菜单栏Notebook下拉或者直接点击页面的Create new note创建Note,Note就是你写代码的编辑窗口,然后弹出图2,按要求编辑好;

 
  图1 zeppelin登录后界面 
 

 
  图2 zeppelin创建新的Note命名 
 
编写Note的Spark-SQL程序
Note里面的代码是由一段一段(paragraph)组成的,当你写完一段运行完后,会在下面生成一个新的paragraph,这些paragraph就组成了这个Note,具体的操作如下图3;多尝试下就上手了,这里写一个hive表里面查询每个城市的售卖某商品的个数;
   注意:sql能运行需要你配置了spark on hive,有疑问的可以参考Hive从入门到放弃——Hive与其他技术的结合之spark on hive(十七);

 
  图3 Note编写 
    
每一段paragraph的界面布局如图4,右上角的按钮分别为;  
- 执行段落代码;
- 隐藏/显示代码区域
- 隐藏/显示结果区域
- paragraph设置,点击展开如图5

 
  图4 每一段paragraph的界面分布 
 
每一段paragraph设置详情如图5,分别为:
- 找到段落ID(20150924-163507_134879501)
- 控制段落宽度。由于Zeppelin使用Twitter Bootstrap的网格系- 统,因此每个段落的宽度可以从1更改为12
- 将第1段上移
- 将第1段下移
- 创建一个新段落
- 更改段落标题
- 显示/隐藏行号 code section
- 禁用此段的运行按钮(因为顶上还有运行所有paragraph,所以你懂的!)
- 将当前段落导出为iframe,然后在新窗口中打开iframe
- 清除 result section
- 删除当前段落
  图5 每一段paragraph设置详情 
 
支持查询结果的可视化;如图4,图5的数据树状图和饼图展示

 
  图4 paragraph数据树状图展示 
 

 
  图5 paragraph数据饼图展示 
    
现在说一下整个Note的在工具菜单栏,您可以找到第一个paragraph顶部的命令按钮如图6,图7,功能分别为;  
- 按显示顺序顺序执行所有段落
- 隐藏/显示code section所有段落
- 隐藏/显示result section所有段落
- 清除result section所有段落
- 复制当前笔记
- 将当前Note导出文件。请注意,所有段落中的code section和result section都将被导出。如果result section某些段落中有大量数据,建议在导出之前先清理它们
- 提交当前节点的内容
- 删除笔记
- 使用CRON语法定时执行所有段落的代码

 
  图6 整个Note的菜单button左侧 
    
整个Note的菜单button右侧分别为: - 显示所有键盘快捷键 - 配置与当前注释绑定的解释器 - 配置Note权限 - 开关之间的节点的显示模式default,simple和report  

 
  图7 整个Note的菜单button右侧 
 
编写Paragraph的Spark-Shell程序
Spark-Shell的paragraph运用,如图8,因为博主配置了zeppelin支持spark,则直接可以编写spark,注意解析器改成%spark,这里试一下scala编写的spark-shell代码,如图6;scala和python语言是支持TAB智能拼写补全的哟,不错吧,而且和集群的spark-shell一样spark,sc已经默认给你创建好,可以直接使用;

 
  图8 spark解析器的paragraph 
 
编写Paragraph的Python程序
python的paragraph运用,如图9,因为我安装zeppelin的机器python配置了环境变量,则直接可以编写python,注意解析器改成%python,python和scala语言是支持TAB智能拼写补全的哟;

 
  图9 python解析器的paragraph 
 
Apache Zeppelin支持Spark,python的小试牛刀就说道这里了,有机会多去看看官网介绍Explore Apache Zeppelin UI,了解下基本概念,如图8,同时多倒腾下网页版的这些功能,自然就上手了;
- Note :新建/导入一个Note来编写代码及查看运行结果,类似集成开发环境的一个窗口;
- Paragraph : Note中相互独立的一个段落,一个Note可以有若干个段落组成,且这些段落可以是不同语言的代码,相互独立,互不干扰;
- Interpreter :代码的解析器,或者解释器,不同编程语言段落代码依赖的Interpreter不同,默认新生成的段落的Interpreter和上一个段落的一致,可自行修改,采用段落顶个’%'加上Interpreter类型的形式来引用不同的Interpreter,如%spark,%python,%sql等;
- Interpreter Setting:各自Interpreter的独自配置,支持组件的多版本,如你有两个spark集群,则可以配置两个名字不同的Interpreter,各自的配置各不相同,段落代码引用时按各自需求引用即可;
  图10 基本概念补充 
                
 
 
                     
            
        













 
                    

 
                 
                    