import java.io.{BufferedReader, FileInputStream, InputStreamReader} import scala.collection.mutable.ArrayBuffer object IpRulesLoader { //使用IO流读数据,然后放入到一个ArrayBuffer //在object中定义的定义的数据是静态的,在一个JVM进程中,只有一份 val ipRules = new ArrayBuffer[(Long, Long, String, String)]() //加载IP规则数据,在Executor的类加载是执行一次 //静态代码块 //读取HDFS中的数据 //val fileSystem = FileSystem.get(URI.create("file://"), new Configuration()) //val inputStream = fileSystem.open(new Path("/Users/xing/Desktop/ip.txt")) val bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream("data/ip.txt"))) var line: String = null do { line = bufferedReader.readLine() if (line != null) { //处理IP规则数据 val fields = line.split("[|]") val startNum = fields(2).toLong val endNum = fields(3).toLong val province = fields(6
案例-使用单例对象加载规则数据
最新推荐文章于 2022-07-05 16:33:42 发布
该博客展示了如何在Spark中利用单例对象`IpRulesLoader`加载规则数据,对访问日志进行处理,计算各省份访问次数,并在Executor中分批写入MySQL数据库。博客强调了数据收集到Driver端的限制以及在Executor中执行数据库操作的优化策略。
摘要由CSDN通过智能技术生成