我试图将一些文档保存到Elasticsearch:
newStream.foreach(rdd => rdd.saveToEs(elasticResource))
使用SparkConf的设置:
val conf = new SparkConf().setMaster("local[*]")
.setAppName("RabbitIngestor")
.set("es.nodes", "localhost")
.set("es.port", "9200")
.set("es.index.auto.create", "true")
.set("es.nodes.discovery", "false")
.set("es.batch.size.entries", "0")
val elasticResource = "data/product"
上下文:
val ssc = new StreamingContext(conf, Seconds(1))
但是这项工作无处可去,只是增加了工作但却没有开始。
15/08/13 17:43:53 INFO JobScheduler: Added jobs for time 1439484233000 ms
15/08/13 17:43:54 INFO JobScheduler: Added jobs for time 1439484234000 ms
15/08/13 17:43:55 INFO JobScheduler: Added jobs for time 1439484235000 ms
我认为这与批量大小有关(但我将其设置为1)。此外,它创建索引,如果它不存在。
有什么想法吗?
更新:最终我收到此错误并写了一个文档:
15/08/13 18:26:03 ERROR NetworkClient: Node [Operation timed out] failed (172.17.0.28:9200); selected next node [localhost:9200]
但是,不知道它在哪里获得该地址而不是正确的地址(localhost)
答案 0 :(得分:1)
最后问题是我在docker中运行Elasticsearch,并且在通过localhost进行初始握手之后,它试图直接与节点通信。所以它是Docker的端口转发问题。
答案 1 :(得分:0)
请在您的SENSE ui上运行以下查询 GET _search {"查询" {" MATCH_ALL":{}}}
检查记录数。 是0吗?