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

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

为什么在 Zeppelin 平台使用 Alink

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

  • 支持丰富的执行模式:Local/Remote/Yarn
  • 支持对接 Hive
  • 支持 UDF (Scala,Python)
  • 支持 SQL (Batch SQL, Streaming SQL)
  • 支持可视化

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

Flink on Zeppelin 文章系列:

  • Flink on Zeppelin(1)入门篇
  • Flink on Zeppelin(2)Batch 篇
  • Flink on Zeppelin(3)Streaming 篇

Flink on Zeppelin 直播系列:

  • Flink on Zeppelin: 极致体验(1) 入门 + Batch
    https://ververica.cn/developers/flink-training-course3/
  • Flink on Zeppelin: 精致体验(2) Streaming + 高级应用
    https://ververica.cn/developers/flink-training-course3/

准备工作

首先你需要安装 Zeppelin + Flink + Alink:

  • 安装 Zeppelin 和 Flink,请参考 Flink on Zeppelin 入门篇
  • 运行下面的命令安装 pyalink
pip install pyalink
  • 安装 Alink jar 包

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

验证 Alink

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

Logsitic Regression

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

bank 数据:
https://archive.ics.uci.edu/ml/datasets/bank+marketing

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

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

Step 3. 构建 Pipeline

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

Step 4. 查看 Model Metrics

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

■ Step 5. 错误数据诊断

除了查看 Model Metrics,你还可以看看那些没有被正确分类的数据,从这些数据中寻找线索。

这个就是如何在 Zeppelin 中使用 Alink 来做机器学习,正如之前所述,模型训练只是机器学习的一小步,机器学习之前你往往需要做数据清理,数据探索等等,这时候你就可以利用 Zeppelin 中集成的 Flink 能力来做这些事情,总之你可以在 Zeppelin 这个平台完成整个端到端的数据处理,数据分析,机器学习整条链路。

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

原文链接
本文为云栖社区原创内容,未经允许不得转载。

Flink on Zeppelin (4) - 机器学习篇相关推荐

  1. Flink on Zeppelin 流计算处理最佳实践

    简介: 欢迎钉钉扫描文章底部二维码进入 EMR Studio 用户交流群 直接和讲师交流讨论~ 点击以下链接直接观看直播回放:https://developer.aliyun.com/live/247 ...

  2. Flink x Zeppelin ,Hive Streaming 实战解析

    行业解决方案.产品招募中!想赚钱就来传!>>> Flink 1.11 正式发布已经三周了,其中最吸引我的特性就是 Hive Streaming.正巧 Zeppelin-0.9-pre ...

  3. Flink on zeppelin第五弹设置checkpoint

    概述 Flink的exactly-once语义实现是需要依赖checkpoint的,对于一个有状态的Flink任务来说如果想要在任务发生failover,或者手动重启任务的时候任务的状态不丢失是必须要 ...

  4. Flink on Zeppelin 系列之:Yarn Application 模式支持

    简介:Zeppelin 如何实现并使用 Yarn Application 模式. 作者:章剑锋(简锋) 去年 Flink Forward 在讲 Flink on Zeppelin 这个项目的未来时我们 ...

  5. 国内首本数据竞赛图书《阿里云天池大赛赛题解析——机器学习篇》今日开启预售!

    天池平台已经举办了超过 200 场来自真实业务场景的竞赛,每场赛事沉淀的课题和数据集,将在天池保留和开放.天池平台已成为在校学生踏入职场前的虚拟实践基地,也成为聚集40万数据人才,孵化2000余家数据 ...

  6. 阿里云天池大赛赛题解析——机器学习篇 | 留言赠书

    国内第一本针对竞赛实操的图书:<阿里云天池大赛赛题解析--机器学习篇>,正式发售. 阿里云天池7年200多场数据大赛精华提取录 为什么写这本书 七年前,天池团队的几名创始成员带着" ...

  7. 阿里云天池大赛赛题解析——机器学习篇

    阿里云天池大赛赛题解析--机器学习篇 (豆瓣)图书阿里云天池大赛赛题解析--机器学习篇 介绍.书评.论坛及推荐 https://book.douban.com/subject/35192976/ 阿里 ...

  8. 深度学习导论与应用实践(机器学习篇)

    深度学习导论与应用实践(机器学习篇) 前言 机器学习概述 机器学习基本定义和基本术语 数据预处理 数据清洗 数据集拆分 机器学习三要素 1.模型 判别模型和生成模型 概率模型和非概率模型 机器学习方法 ...

  9. Flink面试,看这篇就足够了

    概述 2019 年是大数据实时计算领域最不平凡的一年,2019 年 1 月阿里巴巴 Blink (内部的 Flink 分支版本)开源,大数据领域一夜间从 Spark 独步天下走向了两强争霸的时代.Fl ...

最新文章

  1. 听说过OpenJDK,没说过OpenValueJDK吧?
  2. [2019.2.24]BZOJ4591 [Shoi2015]超能粒子炮·改
  3. .net访问PostgreSQL数据库发生“找不到函数名”的问题追踪
  4. python白名单验证是什么意思_第10.5节 使用__all__定义Python模块导入白名单
  5. 集团bim对集团项目服务器,BIM再添一员,五洋建设集团BIM项目组举行成立仪式
  6. 洛谷入门题P1422、P1085、P1089、P1909题解(Java语言描述)
  7. python tablewidget 颜色_更改QTableWidget的默认选择颜色,并使其半透明
  8. linux中使用ntpdate命令进行时间更新时出现the NTP socket is in use, exiting
  9. python画立体心形折纸图解_立体的心形盒子的折纸图解过程
  10. vuetify文件上传 file inputs
  11. 2019腾讯校园招聘面经
  12. please use torch.load with map_location=torch.device(‘cpu‘) to map your storages to the CPU.
  13. mp3格式怎么转html格式转换器,flac转mp3格式转换器 如何将flac格式的音频文件转换为MP3格式...
  14. 随记 C#读取TXT文件乱码
  15. 设计模式之禅【状态模式】
  16. M301H,M301A,CM201系列盒子刷机
  17. laravel 教程
  18. 大数据、趋势与黑天鹅
  19. ArcGIS经纬网不穿过图层的具体设置步骤
  20. 功率变送器让造纸磨浆机控制系统的可靠又安全

热门文章

  1. 挂机宝装mysql_挂机宝安装
  2. python jieba词频统计英文文本_python实战,中文自然语言处理,应用jieba库来统计文本词频...
  3. 静态网页托管_求职季,教你制作一份精美的在线网页简历,程序员必看!!
  4. Linux上的JAVA的IDE,在linux上运行的基于文本的强大java IDE
  5. windows服务器迁到_Windows Server 2008 R2 DNS 服务器迁移方法
  6. 1964年诞生的第一代电子计算机,世界第一台电子计算机诞生的年份是?
  7. execve系统调用_Linux系统编程——进程替换:exec 函数族
  8. 最少交换次数python_leetcode第200周赛第三题leetcode1536. 排布二进制网格的最少交换次数...
  9. java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...
  10. git 小乌龟 更新分支_git常用操作