Flink on Zeppelin (4) - 机器学习篇
今天我来讲下如何在 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 这个平台完成整个端到端的数据处理,数据分析,机器学习整条链路。
如果有碰到任何问题,请加入下面这个钉钉群讨论。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【云栖号案例 | 交通&物流】菜鸟网络宣布推出物流加速上云行动“鲲鹏计划”
云栖号案例库:【点击查看更多上云案例】不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 公司介绍 “菜鸟网络科技有限公司”是2013年5月28日,阿里巴巴集团、银泰集团联合复星集团、富春集团、顺丰集团、三通一达(申通、圆通、中通、韵达),以及相关金融机构共同合作共同组建的正式成立的。“中国智能物流骨干网”(简称CSN)。 “菜鸟”小名字大志向,其目标是通过5至8年的努力打造一个开放的社会化物流大平台,在全国任意一个地区都可以做到24小时送达。2016年3月14日,阿里巴巴旗下大数据物流平台公司菜鸟网络宣布已经完成首轮融资,融资额超百亿元,估值近500亿元人民币。 上云背景 我们与阿里云联合宣布推出物流加速上云行动“鲲鹏计划”,共同推动全球物流行业进入“云上的日子”。该计划一方面将进一步加速国内的物流企业和物流包裹使用物流云的比例;另一方面利用遍布全球的节点集群,物流云还将扩大服务范畴至海外物流企业。 物流行业启用更安全的物流云服务也是大势所趋,它不仅能够有效抵挡外部攻击,还能有效降低物流行业成本,遇上双11、双12等业务量大增,物流云可瞬间弹性扩容,...
- 下一篇
使用DataBinding还在为数据处理头疼?这篇文章帮你解决问题
前言 在前几年兴起了MVVM架构设计模式,最具有代表的框架就是DataBinding,虽然这种设计架构非常新颖,但是在使用中仍然还有很多痛点,所以我当时觉得短时间这个设计架构可能不会太流行。 最近接手了新项目,使用的就是MVVM,才发现只一两年的功夫MVVM的发展竟然这么快,已经是Android开发者必备的技能之一了。 正文 DataBinding在刚开始阶段,最令我头疼的就是数据处理的问题,往往为了显示数据,我要在XML中绑定N多个字段,如果是一个中等以上的工程,还有更蛋疼的问题,例如: 你的XML可能迫切的需要if或者switch这样的判断; 意想不到的空指针 在2018年,Google推出JetPack库,其中的ViewModel+LIveData终于把MVVM推上了新的高度。 ViewModel 使用ViewModel需要依赖lifecycle库: implementation "android.arch.lifecycle:viewmodel:x.x.x" implementation "android.arch.lifecycle:extensions:x.x.x" Vie...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Linux系统CentOS6、CentOS7手动修改IP地址
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题