我正在学习Spark,并试图编写非常简单的应用程序。 作为输入,我有日志字符串,看起来像
INFO - {timestamp} - {path} - {json message}
INFO - 124534234534534 - test.class - {"message": "something happened"]
我想将它传递给ElasticSearch。所以我需要把{timestamp}带到{json message}的新字段,所以看起来应该是
{"timestamp": "1234343132", "message": "something happened"}
有人可以帮我使用Java进行这种转换吗?
答案 0 :(得分:1)
创建一个Function
<String, String>
,它接受一行日志并返回JSON字符串。
Function<String, String> f = new Function<String, String>() {
public String call(String s) { return ...; }
}
使用SparkContext.textFile
JavaSparkContext sc = ...;
JavaRDD<String> rdd = sc.textFile(...)
map
使用第1点中定义的函数创建了RDD。
rdd.map(f);