2016-09-18 1 views
0

Я изучаю Spark и пытаюсь написать довольно простое приложение. В качестве вклада у меня есть строка журнала, который выглядит какПреобразование строк с использованием Spark

INFO - {timestamp} - {path} - {json message} 
INFO - 124534234534534 - test.class - {"message": "something happened"] 

Я хочу, чтобы передать его в ElasticSearch. Поэтому мне нужно взять {} временной метки и поместить его в новое поле {JSon сообщения}, поэтому он должен выглядеть

{"timestamp": "1234343132", "message": "something happened"} 

Может кто-нибудь помочь мне с этой трансформацией с использованием Java?

+1

Вы можете включить ваши собственные попытки решить эту проблему? –

+0

Я легко делаю это в чистой java, без искры. Пытался найти некоторые примеры с преобразованием (не количество слов) - все они на scala. Если я что-то пропустил, пожалуйста, укажите мне статью или аналогичный образец – Andriy

ответ

1
  1. Создать Function<String, String> который принимает строку журнала и возвращает JSON строку.

    Function<String, String> f = new Function<String, String>() { 
        public String call(String s) { return ...; } 
    } 
    
  2. Чтение данных с использованием SparkContext.textFile

    JavaSparkContext sc = ...; 
    JavaRDD<String> rdd = sc.textFile(...) 
    
  3. map созданный РДД с помощью функции, определенной в пункте 1.

    rdd.map(f);