es-hadoop saveToEsWithMeta
@Test def testEsRDDWriteWithDynamicMapping() { val doc1 = Map("one" -> null, "two" -> Set("2"), "three" -> (".", "..", "..."), "number" -> 1) val doc2 = Map("OTP" -> "Otopeni", "SFO" -> "San Fran", "number" -> 2) val target = wrapIndex("spark-test/scala-dyn-id-write") val pairRDD = sc.makeRDD(Seq((3, doc1), (4, doc2))).saveToEsWithMeta(target, cfg) assertEquals(2, EsSpark.esRDD(sc, target).count()); assertTrue(RestUtils.exists(target + "/3")) assertTrue(RestUtils.exists(target + "/4")) assertThat(RestUtils.get(target + "/_search?"), containsString("SFO")) } @Test def testEsRDDWriteWithDynamicMapMapping() { val doc1 = Map("one" -> null, "two" -> Set("2"), "three" -> (".", "..", "..."), "number" -> 1) val doc2 = Map("OTP" -> "Otopeni", "SFO" -> "San Fran", "number" -> 2) val target = wrapIndex("spark-test/scala-dyn-id-write") val metadata1 = Map(ID -> 5, TTL -> "1d") val metadata2 = Map(ID -> 6, TTL -> "2d", VERSION -> "23") assertEquals(5, metadata1.getOrElse(ID, null)) assertEquals(6, metadata2.getOrElse(ID, null)) val pairRDD = sc.makeRDD(Seq((metadata1, doc1), (metadata2, doc2))) pairRDD.saveToEsWithMeta(target, cfg) assertTrue(RestUtils.exists(target + "/5")) assertTrue(RestUtils.exists(target + "/6")) assertThat(RestUtils.get(target + "/_search?"), containsString("SFO")) }
spark-2.0.0-bin-hadoop2.6/bin/spark-shell --jars elasticsearch-hadoop-5.0.1/dist/elasticsearch-spark-20_2.11-5.0.1.jar
注意版本对应关系!
import org.apache.spark.SparkConf import org.elasticsearch.spark._ sc.getConf.setMaster("local").setAppName("RDDTest").set("es.nodes", "127.0.0.1").set("es.index.auto.create", "true"); val numbers = Map("one" -> 1, "two" -> 2, "three" -> 3) val airports = Map("OTP" -> "Otopeni", "SFO" -> "San Fran") val r=sc.makeRDD(Seq(numbers, airports)) r.saveToEs("spark/data") val doc1 = Map("one" -> null, "two" -> Set("2"), "three" -> (".", "..", "..."), "number" -> 1) val doc2 = Map("OTP" -> "Otopeni", "SFO" -> "San Fran", "number" -> 2) val pairRDD = sc.makeRDD(Seq((3, doc1), (4, doc2))) pairRDD.saveToEsWithMeta("data/test")
可以看到ES请求data/test/3中id为3的文档,data/test/4中id为4的文档!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」