分享

about云日志分析项目准备11-3:ip库介绍以及使用

PeersLee 发表于 2017-5-8 20:23:13 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 2189
本帖最后由 PeersLee 于 2017-5-8 20:24 编辑
问题导读:
1. ip库每个字段都是什么意思?
2. 如何使用ip库?





解决方案:


1. 字段介绍以及讲解

所谓IP地址就是给每个连接在互联网上的主机分配的一个32位地址,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。但是事实上,ip就是一个32位的2进制数.


  1.         0.0.0.0          0.255.255.255        IANA,保留地址
  2.         1.0.0.0              1.0.0.255        澳大利亚, CZ88.NET
  3.         1.0.1.0              1.0.3.255        福建省,电信
  4.         1.0.4.0              1.0.7.255        澳大利亚, CZ88.NET
  5.         1.0.8.0             1.0.15.255        广东省,电信
  6.        1.0.16.0             1.0.31.255        日本,Beacon服务器
  7.        1.0.32.0             1.0.63.255        广东省,电信
  8.        1.0.64.0            1.0.127.255        日本,広島県中区大手町Energia通信公司
  9.       1.0.128.0            1.0.255.255        泰国, CZ88.NET
  10.         1.1.0.0              1.1.0.255        福建省,电信
  11.         1.1.1.0              1.1.1.255        澳大利亚,亚太互联网络信息中心
  12.         1.1.2.0              1.1.7.255        福建省,电信
  13.         1.1.8.0             1.1.63.255        广东省,电信
  14.        1.1.64.0            1.1.127.255        日本,东京都新宿区歌舞伎町i2ts公司
  15.       1.1.128.0            1.1.142.255        泰国,穆达汉
  16.       1.1.143.0            1.1.144.255        泰国, CZ88.NET
  17.       1.1.145.0            1.1.147.255        泰国,沙功那空
  18.       1.1.148.0            1.1.149.255        泰国, CZ88.NET
  19.       1.1.150.0            1.1.150.128        泰国,沙功那空
  20.     1.1.150.129            1.1.150.255        泰国,曼谷
  21.       1.1.151.0            1.1.151.255        泰国, CZ88.NET

复制代码


如ip, 1.1.151.0            1.1.151.255        泰国, CZ88.NET ,ip范围在 1.1.151.0            1.1.151.255 的是泰国, CZ88.NET

2. 从本读取并打印


  1. import org.apache.spark.{SparkConf, SparkContext}

  2. import scala.util.matching.Regex

  3. /**
  4.   * Created by peerslee on 17-3-10.
  5.   */
  6. object IP {
  7.   // 将ip地址转换为整数
  8.   def ip2num(ip : String) : Long = {
  9.     val fragments = ip.split("\\.")
  10.     var ipNum = 0L
  11.     for (i <- 0 until fragments.length) {
  12.       // 与运算
  13.       ipNum = fragments(i).toLong | ipNum << 8L
  14.     }
  15.     ipNum
  16.   }
  17.   def main (args : Array[String]): Unit = {
  18.     val conf = new SparkConf().setAppName("IpLocationByTime").setMaster("local")
  19.     val sc = new SparkContext(conf)

  20.     // 加载ip属地规则
  21.     val ipRuelsRdd = sc.textFile("/home/peerslee/spark_data/ip_part1.txt").map(line =>
  22.       // map RDD 的Transformation 操作,用 f 处理一个Rdd 的所有元素,将结果输出到另一个Rdd
  23.     {
  24.       val fields = line.trim().split("\t")
  25.       val start_num = ip2num(fields(0).trim())
  26.       val end_num = ip2num(fields(1).trim())
  27.       val province = fields(2).trim()
  28.       (start_num, end_num, province)
  29.     })
  30.     ipRuelsRdd.collect().foreach(println)
  31.     sc.stop()

  32.   }

  33. }

复制代码


结果:

  1. 17/05/08 20:18:10 INFO DAGScheduler: ResultStage 0 (collect at IP.scala:33) finished in 0.196 s
  2. 17/05/08 20:18:10 INFO DAGScheduler: Job 0 finished: collect at IP.scala:33, took 0.304352 s
  3. (0,16777215,IANA,保留地址)
  4. (16777216,16777471,澳大利亚, CZ88.NET)
  5. (16777472,16778239,福建省,电信)
  6. (16778240,16779263,澳大利亚, CZ88.NET)
  7. (16779264,16781311,广东省,电信)
  8. (16781312,16785407,日本,Beacon服务器)
  9. (16785408,16793599,广东省,电信)
  10. (16793600,16809983,日本,広島県中区大手町Energia通信公司)
  11. (16809984,16842751,泰国, CZ88.NET)
  12. (16842752,16843007,福建省,电信)
  13. (16843008,16843263,澳大利亚,亚太互联网络信息中心)
  14. (16843264,16844799,福建省,电信)
  15. (16844800,16859135,广东省,电信)
  16. (16859136,16875519,日本,东京都新宿区歌舞伎町i2ts公司)
  17. (16875520,16879359,泰国,穆达汉)
  18. (16879360,16879871,泰国, CZ88.NET)
  19. (16879872,16880639,泰国,沙功那空)
  20. (16880640,16881151,泰国, CZ88.NET)
  21. (16881152,16881280,泰国,沙功那空)
  22. (16881281,16881407,泰国,曼谷)
  23. (16881408,16881663,泰国, CZ88.NET)
  24. 17/05/08 20:18:10 INFO SparkUI: Stopped Spark web UI at [url]http://172.26.44.187:4040[/url]
  25. 17/05/08 20:18:10 INFO MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!

复制代码


链接: https://pan.baidu.com/s/1c5vbBo 密码: wvg2

没找到任何评论,期待你打破沉寂

关闭

推荐上一条 /2 下一条