使用Spark进行字符串转换

时间:2016-09-18 21:13:08

标签: java apache-spark transformation

我正在学习Spark,并试图编写非常简单的应用程序。 作为输入,我有日志字符串,看起来像

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

我想将它传递给ElasticSearch。所以我需要把{timestamp}带到{json message}的新字段,所以看起来应该是

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

有人可以帮我使用Java进行这种转换吗?

1 个答案:

答案 0 :(得分: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。

    rdd.map(f);