Spark中广播的使用
来源:互联网 发布:php过滤所有的空格 编辑:程序博客网 时间:2024/06/06 20:30
import org.apache.spark.{SparkConf, SparkContext}/** day30课程 * Created by root on 2016/5/18. */object IPLocation { def ip2Long(ip: String): Long = { val fragments = ip.split("[.]") var ipNum = 0L for (i <- 0 until fragments.length){ ipNum = fragments(i).toLong | ipNum << 8L } ipNum } def binarySearch(lines: Array[(String, String, String)], ip: Long) : Int = { var low = 0 var high = lines.length - 1 while (low <= high) { val middle = (low + high) / 2 if ((ip >= lines(middle)._1.toLong) && (ip <= lines(middle)._2.toLong)) return middle if (ip < lines(middle)._1.toLong) high = middle - 1 else { low = middle + 1 } } -1 } def main(args: Array[String]) { val conf = new SparkConf().setMaster("local[2]").setAppName("IpLocation") val sc = new SparkContext(conf) val ipRulesRdd = sc.textFile("c://ip.txt").map(line =>{ val fields = line.split("\\|") val start_num = fields(2) val end_num = fields(3) val province = fields(6) (start_num, end_num, province) }) //全部的ip映射规则 val ipRulesArrary = ipRulesRdd.collect() //广播规则 val ipRulesBroadcast = sc.broadcast(ipRulesArrary) //加载要处理的数据 val ipsRDD = sc.textFile("c://access_log").map(line => { val fields = line.split("\\|") fields(1) }) val result = ipsRDD.map(ip => { val ipNum = ip2Long(ip) val index = binarySearch(ipRulesBroadcast.value, ipNum) val info = ipRulesBroadcast.value(index) info }) println(result.collect().toBuffer) sc.stop() }}
阅读全文
0 0
- Spark中广播的使用
- Spark的广播和累加器的使用
- Spark的广播变量
- Android中广播的使用
- 短信中广播的使用
- Spark中广播变量知识点
- 广播broadcast的使用,不断更新中....
- android 中自定义广播的使用broardcast
- spring 中 applicationEvent的使用 广播
- Android中广播的简单使用
- 【Android】Android中广播的基本使用
- Android中广播的使用(动态、静态注册的区别,有序无序广播的使用)
- spark中的scala的广播变量
- Spark的广播变量和累加变量
- spark通过ip计算IP所在省份,以及广播变量的使用
- spark学习-34-Spark的BroadcastManager广播管理器
- Spark On Yarn中spark.yarn.jar属性的使用
- Spark Hive使用中遇到的坑
- Vuex 2.0 源码分析
- Caffe(20):用训练好的caffemodel来进行分类
- struts2 客户端验证+服务端验证 简单例子
- Android源代码中使用的内部类
- hibernate的增删改查EntityManager怎么注入JPA @PersistenceContext
- Spark中广播的使用
- 网上关于视频网站的视频地址解析的方法有哪些?
- 面试题目2:实现单例模式
- Spring中泛型依赖注入
- Vuex 模块化实现待办事项的状态管理
- 【计算机视觉】 相机姿态估计之标记检测-检测ChArUco角点3
- Kotlin Android 扩展
- python2.5与python3虚拟环境使用
- Vuex 通俗版教程