大数据学习之路81-根据ip计算归属地

本文介绍了如何处理访问日志,通过二分查找法在IP规则库中快速查找每个记录对应的省份。同时,利用广播变量在大数据处理中节省资源,最终实现高效地计算IP的归属地。
摘要由CSDN通过智能技术生成

先来看看我们需要操作的文件:

左边是我们的访问日志,右边是ip规则,而我们需要做的就是

根据左边的访问记录中的ip,在ip规则中确定出这条记录所在的省份。

我们在整个操作中会用到二分查找,因为这样会快速定位。

还有将ip转换为long值的方法。

还会用到广播变量,这样就会节省资源。

package com.test.IpText

object IpTest{
  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[(Long,Long,String)],ip:Long):Int = {
    var low = 0
    var high 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

未来@音律

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

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

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

打赏作者

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

抵扣说明:

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

余额充值