一、数据源
下载链接:
-
ip.txt
https://download.csdn.net/download/weixin_46122692/12889019 -
logs.txt
https://download.csdn.net/download/weixin_46122692/12922940
数据结构:
-
logs.txt 记录了网站访问记录,有对应IP
-
ip.txt 记录了用户的相关信息,有IP的最小值和最大值、省份
二、项目需求
根据 logs.txt中IP 转换去 IP.txt 中查找IP对应省份,计算每个省份的网站访问次数
三、代码展示
import org.apache.log4j.{
Level, Logger}
import org.apache.spark.broadcast.Broadcast
import org.apache.spark.rdd.RDD
import org.apache.spark.{
SparkConf, SparkContext}
object Demo02IP {
/* 自定义方法,将IP转换成十进制 IPV4范围 0.0.0.0 ==> 255.255.255.255 相当于256进制 */
def ipToLong(ip: String): Long = {
/* 例如 IP : 123.197.64.247 */
val lines: Array[String] = ip.split("\\.")
/* 将IP转换成十进制返回 */
lines(3).toLong + lines(2).toLong * 256 + lines(1).toLong * 256 *256 + lines(0).toLong * 256 * 256 * 256
}
/* 自定义方法,利用二分查找,查询出IP在IP库中属于哪个,进而求出,Ip对应的省份 */
def search(ipResult: Array[(Long, Long, String)]</