Flink 的分布式缓存
Flink 提供了一个类似于 Hadoop 的分布式缓存,让并行运行实例的函数可以在本地访问。这个功能可以被使用来分享外部静态的数据,例如:机器学习的逻辑回归模型等!
缓存的使用流程:
使用 ExecutionEnvironment 实例对本地的或者远程的文件(例如:HDFS 上的文件),为缓存文件指定一个名字注册该缓存文件!当程序执行时候,Flink 会自动复制文件或者目录到所有 worker 节点的本地文件系统中,函数可以根据名字去该节点的本地文件系统中检索该文件!
【注意】广播是将变量分发到各个 worker 节点的内存上,分布式缓存是将文件缓存到各个 worker 节点上;
示例
从 hdfs 上拿到 subject.txt 数据,再与 Clazz 数据组合成新的数据集,组成:(学号,班级,学科,分数)
样例数据:
subject.txt : (学号,学科,分数)
1,wuli,76
2,yuwen,80
3,yingwu,75
4,shuju,65
5,huaxue,87
6,shuju,95.5
7,yuwen,96.5
8,huaxue,95.5
Clazz : (学号, 班级 )
valclazz:DataSet[Clazz] = env.fromElements(
Clazz(1,"class_1"),
Clazz(2,"class_1"),
Clazz(3,"class_2"),
Clazz(4,"class_2"),
Clazz(5,"class_3"),
Clazz(6,"class_3"),
Clazz(7,"class_4"),
Clazz(8,"class_1")
)
步骤
1. 获取 ExecutionEnvironment 运行环境
2. 开启分布式缓存
2.加载本地数据
3.数据转换(使用分布式缓存)
4. 打印测试
代码
版权声明: 本文为 InfoQ 作者【大数据技术指南】的原创文章。
原文链接:【http://xie.infoq.cn/article/c8dc14c2f7c2efa9dc4ae42e4】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论