More Related Content
Similar to Spark in small or middle scale data processing with Elasticsearch
Similar to Spark in small or middle scale data processing with Elasticsearch (20)
More from chibochibo (12)
Spark in small or middle scale data processing with Elasticsearch
- 1. Spark in small or middle
scale data processing with
Elasticsearch
2015-06-01 第10回elasticsearch勉強会
- 17. Elasticsearch for Hadoop
● elasticsearch-hadoopに含まれるApache
Spark Supportを使うことで、Sparkのストレー
ジとしてElasticsearchを使える
HadoopからESへ投入
Hadoop上でESから抽出
- 20. インデックスを結合
val conf = new SparkConf().setAll(Seq(
ES_RESOURCE -> "job/sample",
ES_QUERY -> "?q=*:*"
))
val spark = new SparkContext(conf)
import SparkContext._
val rdd = spark.esRDD.leftOuterJoin(spark.esRDD(Map(
ES_RESOURCE -> "geo/sample",
ES_QUERY -> "?q=*:*"
))).flatMap { case (_id, (_source, geo)) =>
geo.map { x =>
_source ++ Map("workLocation" -> x("workLocation"))
}
}
jobインデックスに
geoインデックスを外部結合
- 31. コード例
val spark = new StreamingContext(new SparkConf, Minutes(1))
val dstream = spark.textFileStream("s3n://hoge/test")
.flatMap(_ split "n")
.map(...)
.transform(... RDDに対する処理 ...)
.foreachRDD { rdd =>
// saving data only if DStream is not empty
if(!rdd.isEmpty) rdd.saveToEs(Map(
ES_NODES -> "localhost",
ES_RESOURCE -> "job/sample"
))
}
バッチと同様、RDDに対して
saveToEsを実行