【Flink实战系列】Flink 的分布式缓存使用

本文详细介绍了Flink的分布式缓存功能,将其与Apache Hadoop和Spark的广播进行对比,并提供了Scala和Java版本的示例代码,展示了如何注册和访问缓存文件以计算单词出现次数。通过缓存,Flink能够将静态数据高效地分发到所有工作节点。
摘要由CSDN通过智能技术生成

Flink 提供了一个分布式缓存,类似于Apache Hadoop,可以在本地访问用户函数的并行实例。此函数可用于共享包含静态外部数据的文件,如字典或机器学习的回归模型。

缓存的工作原理如下。程序在其作为缓存文件的特定名称下注册本地或远程文件系统(如 HDFS 或 S3)的文件或目录 ExecutionEnvironment。执行程序时,Flink 会自动将文件或目录复制到所有工作程序的本地文件系统。用户函数可以查找指定名称下的文件或目录,并从 worker 的本地文件系统访问它。

其实分布式缓存就相当于 spark 的广播,把一个变量广播到所有的 executor 上,也可以看做是 Flink 的广播流,只不过这里广播的是一个文件.

分布式缓存使用如下:

注册中的文件或目录 ExecutionEnvironment


val env = ExecutionEnvironment.getExecutionEnvironment

// register a file from HDFS
env.registerCachedFile("hdfs:///path/to/your/file", "hdfsFile")

// register a local executable file (script, executable, ...)
env.registerCachedFile("file:///path/to/exec/file", "localExecFile", true)

// define your program and execute
...
val input: DataSet[String] = ...
val result: DataSet[Integer] = input.map(new MyMapper())
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JasonLee实时计算

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值