我正在尝试从具有20亿条记录的弹性搜索索引中读取数据。我正在尝试将获取的数据写入Mongo DB。尽管我的代码可以正常工作,但我想知道如何分批执行相同的操作,例如100万条记录。
val spark = SparkSession
.builder()
.appName("ESToMongoDataUpload")
.config("es.nodes", Config.ES_NODES)
.config("es.net.http.auth.user", Config.ES_NET_HTTP_AUTH_USER)
.config("es.net.http.auth.pass", Config.ES_NET_HTTP_AUTH_PASS)
.config("es.net.ssl", Config.ES_NET_SSL)
.config("es.nodes.wan.only", Config.ES_NODES_WAN_ONLY)
.config("es.read.field.as.array.include", esConfig)
.config("es.read.metadata", true)
.config("spark.es.mapping.date.rich", false)
.getOrCreate()
import spark.implicits._
val df = spark.read
.format("org.elasticsearch.spark.sql")
.option("query", esQuery)
.option("pushdown", "true")
.option("scroll.size", 10000)
.load(Config.ES_RESOURCE)
.withColumn("_id", $"_metadata".getItem("_id"))
.drop("_metadata")
df.write
.format("com.mongodb.spark.sql.DefaultSource")
.mode("append")
.option("spark.mongodb.output.uri", mongoURI)
.save()
我想从弹性搜索中批量读取100万个数据并将其写入Mongo DB。