Flink on Zeppelin (4) - 机器学习篇

用户头像
章剑锋_Jeff
关注
发布于: 2020 年 06 月 18 日
Flink on Zeppelin (4) - 机器学习篇

今天我来讲下如何在Zeppelin里做机器学习。机器学习的重要性我就不多说了,我们直奔主题。



       Flink在机器学习这个领域发力较晚,社区版没有一个完整的机器学习算法库可以用,Alink[1]是目前Flink生态圈相对比较完整的机器学习算法库,Alink也在往Flink社区贡献的路上。今天我主要讲的就是如何在Zeppelin里使用Alink。



为什么在Zeppelin平台使用Alink



     Zeppelin已经很好的集成了Flink,在Zeppelin中使用Alink可以充分利用Zeppelin集成Flink所提供的特性,包括:

  • 支持SQL (Batch SQL, Streaming SQL)

  • 支持可视化

  • 各种各种模式的Flink Job部署方式(local,standalone,yarn)



有关Flink on Zeppelin的具体特性支持可以参考下面的文章和钉钉直播视频

Flink on Zeppelin 文章系列



  • Flink on Zeppelin: 极致体验(1) 入门 + Batch https://www.bilibili.com/video/av91740063

  • Flink on Zeppelin: 精致体验(2) Streaming + 高级应用 https://www.bilibili.com/video/av93631574



准备工作



安装Zeppelin 和 Flink,请参考 Flink on Zeppelin 入门篇

运行下面的命令安装pyalink

pip install pyalink
  • 安装alink jar包

  • 安装完pyalink之后,你可以在python目录里找到alink的jar包,然后把这些jar包copy到Flink的lib目录下,这是我的机器上的jar包位置



    现在你可以就可以在Zeppelin里运行Alink了,有关Alink的具体用法我就不再详述,大家可以参考[1][2]。首先我们来运行下面的代码来验证下前面的准备工作是否正确完成,是否能在Zeppelin里运行Alink。





如果你看到了下面的输出,那么说明Alink已经正确安装。



Warning: useCustomEnv will do nothing, since useCustomEnv is used to initialize MLEnv.
a b
0 1 2
1 2 5
2 3 1

上面最重要的一行代码是这行:

mlenv = useCustomEnv(gateway, b_env,bt_env_2, s_env, st_env_2)

mlenv是Alink的入口,b_env, bt_env_2, s_env, st_env_2 是Zeppelin为Flink创建的变量(代表ExecutionEnvironment,BatchTableEnvironment, StreamExecutionEnvironment, StreamTableExecutionEnvironment). 这里的bt_env_2和st_env_2代表支持Flink Planner的TableEnvironment,因为Alink目前是基于DataSet的,只支持Flink Planner,所以这里需要用bt_env_2, st_env_2. (具体可参考Batch篇

Logistic Regression



       接下来我会以Alink的Logstic Regression算法来演示如何在Zeppelin中使用Alink。在这个demo中,我会选用bank数据(https://archive.ics.uci.edu/ml/datasets/bank+marketing),这也是我在Batch篇中使用的数据。机器学习的模型训练往往只是整个机器学习任务的一小步,在做机器学习之前往往需要清理数据,数据分析等等。这里的Bank数据就是我的Batch篇中用Flink引擎清理过的数据。

Step 1. 定义训练数据+测试数据





Step 2. 定义训练特征和目标



运行Step 1和Step 2都会非常快,因为没有触发Flink Job,Step 3会触发Flink Job,开始真正的机器学习训练,右上角你会看到Flink的Job Link。



Step 3. 构建Pipeline





Step 4. 查看Model Metrics





训练模型结束之后只是整个机器学习任务的一小步,之后你往往需要反复修改代码来改进模型,查看模型的Metrics就是其中很重要的一步,从模型的Metrics之中你往往可以看出一些端倪,给改进模型寻找方向。

Step 5. 错误数据诊断





如果有碰到任何问题,请加入下面这个钉钉群讨论。





Apache Zeppelin 公众号



发布于: 2020 年 06 月 18 日 阅读数: 159
用户头像

章剑锋_Jeff

关注

还未添加个人签名 2017.10.18 加入

Apache Member, PMC of Apache Tez, Livy, Zeppelin. Committer of Apache Pig

评论

发布
暂无评论
Flink on Zeppelin (4) - 机器学习篇