2016-09-18 578 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

您可以包括你自己嘗試解決這個問題? – 2016-09-18 22:26:07

+0

我很容易在純java中做到,沒有火花。試圖找到一些與轉換(不是字數)的例子 - 所有這些都在scala上。如果我錯過了一些東西 - 請給我指點一些文章或類似的例子 – Andriy

回答

1
  1. 創建Function<String, String>這需要一個行日誌,並返回JSON字符串。使用SparkContext.textFile

    JavaSparkContext sc = ...; 
    JavaRDD<String> rdd = sc.textFile(...) 
    
  2. 使用函數創建RDD map

    Function<String, String> f = new Function<String, String>() { 
        public String call(String s) { return ...; } 
    } 
    
  3. 讀取數據點定義1

    rdd.map(f);