1,问题思考,在spark里面不管是离线还是实时去使用广播变量,都比较简单,通过可以广播一些静态变量,静态文件,可是在flink里面怎么使用呢?
2,在网上查找一个代码 跟本地实践,Flink 可以有两种广播方式:
1)广播配置文件 或者静态变量
我使用的是Flink的分布式缓存 具体代码如下
package com.coder.flink.core.cache import java.io.{File, FileInputStream} import java.util import java.util.Properties import org.apache.flink.api.common.functions.RichMapFunction import org.apache.commons.io.FileUtils import org.apache.flink.api.common.functions.RichMapFunction import org.apache.flink.configuration.Configuration import org.apache.flink.api.scala.ExecutionEnvironment import org.apache.flink.api.scala._ object CacheProperties { def main(args: Array[String]): Unit = { val env = ExecutionEnvironment.getExecutionEnvironment //在分布式缓存中将本地的文件进行注册 env.registerCachedFile("D:/wxgz-local/resources_ceshi/too.properties", "too") val weight: DataSet[String] = env.fromElements("a","b") weight.map(new RichMapFunction[String, String] { override def open(parameters: Configuration): Unit = { super.open(parameters) val file: File = getRuntimeContext.getDistributedCache.getFile("too") val prop = new Properties prop.load(new FileInputStream(file)) val value = prop.getProperty("cycle") println(s"value = ${value}") // val aa: util.List[_] = FileUtils.readLi