2016-02-06 1 views
-2

Я извлекаю IP из файла журнала доступа, пытался использовать шаблон, но не получал правильный вывод.Как фильтровать IP из файла журнала в другом Rdd

public class IPcount { 
    public static void main(String[] args) { 

    String IPADDRESS_PATTERN = "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"; 
    Pattern pattern = Pattern.compile(IPADDRESS_PATTERN); 
    Matcher matcher = pattern.matcher(t); 

    JavaSparkContext sc = new JavaSparkContext("local", "IPcount"); 
    @SuppressWarnings({ "unused", "serial" }) 
    JavaRDD<String> lines = sc.textFile("/home/bhaumik/Documents/access_log", 5) 
      .flatMap(new FlatMapFunction<String, String>() { 

       @Override 
       public Iterable<String> call(String t) throws Exception { 
        // TODO Auto-generated method stub 
        return null; //HERE WHAT SHOULD I DO SO THAT I CAN GET IP FILTER FROM THE LOG FILE. 
       } 
      }); 
    } 
} 
+0

Как это может быть не по теме, когда кто-то может дать правильный ответ ?? и я точно это объяснил. вот почему люди дают мне ответ –

ответ

1

Вот метод Java для извлечения IP-адреса из JavaRDD<String>, предполагая, что каждая строка может содержать ноль, один или несколько IP-адресов:

public JavaRDD<String> getIPs(JavaRDD<String> rdd) { 
    final String IPADDRESS_PATTERN = "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"; 
    final Pattern pattern = Pattern.compile(IPADDRESS_PATTERN); 

    return rdd.flatMap(new FlatMapFunction<String, String>() { 
     @Override 
     public Iterable<String> call(String t) throws Exception { 
      final Matcher matcher = pattern.matcher(t); 
      final LinkedList<String> matches = new LinkedList<>(); 
      while (matcher.find()) { 
       matches.add(matcher.group()); 
      } 
      return matches; 
     } 
    }); 
} 
+0

Спасибо за помощь и усилия! @TzachZohar –

Смежные вопросы