我正在处理一个文本文件并将转换后的行从 Spark 应用程序写入弹性搜索,如下所示
input.write.format("org.elasticsearch.spark.sql")
.mode(SaveMode.Append)
.option("es.resource", "{date}/" + dir).save()
这运行速度非常慢,大约需要 8 分钟才能写入 287.9 MB / 1513789 条记录。
鉴于网络延迟始终存在,我如何调整 spark 和 elasticsearch 设置以使其更快。
我在本地模式下使用 spark,有 16 个内核和 64GB RAM。我的 elasticsearch 集群有 1 个主节点和 3 个数据节点,每个节点有 16 个内核和 64GB。
我正在阅读如下文本文件
val readOptions: Map[String, String] = Map("ignoreLeadingWhiteSpace" -> "true",
"ignoreTrailingWhiteSpace" -> "true",
"inferSchema" -> "false",
"header" -> "false",
"delimiter" -> "\t",
"comment" -> "#",
"mode" -> "PERMISSIVE")
……
val input = sqlContext.read.options(readOptions).csv(inputFile.getAbsolutePath)