如何计算带有下一个格式的字段的IP的数量,并在Hive中进行查询...



我正在尝试解决这个问题,我在hive中有一个带有customer_id和 ip_range 字段的表格,这个最后一个字段可以具有两种格式:

  1. IPS 的固定范围,下一个符号:

    10.95.112.135-120.95.112.169

    我的查询应返回该范围内的IP的数量,其中35个包括两个IP。

  2. ips 的多个范围,下一个符号:

    10.95.112.135-10.95.112.157,10.95.112.157-10.95.112.169

    我的查询应返回范围的总和,在这种情况下为25 IP。

结果应该是每个Customer_ID的IP的数量

示例:

     customer_ID     ip_range                   
       1             10.95.11.135-120.95.112.169                             
       2             10.95.11.135-120.95.112.159                             
       3             10.95.11.135-120.95.112.140                             
       4             10.95.112.135-10.95.112.157,10.95.112.160-10.95.112.169 
       4             10.95.112.101-10.95.112.102                             
       1             10.95.112.120-10.95.112.124  

结果应显示:

     customer_ID     count_IPs                   
       1             40                             
       2             25                             
       3             6                             
       4             35 

谢谢。

这太长了评论。

修复您的数据!您不想以字符串划界格式存储IP列表。这不好。存储IP列表的正确方法是在表中。就您而言,这看起来像:

create table CustomerIps (
    CustomerIpId int not null,
    CustomerId int not null,
    IpRangeStart varchar(15),
    IpRangeEnd varchar(15),
    IpRangeStartInt int,
    IpRangeEndInt int
);

除了IP的字符串版本外,我还将努力转换为4字节表单(假设IPv4地址表示)。

然后,您的查询很琐碎。

相关内容

最新更新