我使用以下代码从python(pyspark)应用程序向elasticsearch写入一个流。
Model
如果我将结果写入控制台,它工作正常,如果我写入ES - 不是在流模式下,它可以正常工作。这是我以前写给ES的代码:
#Streaming code
query = df.writeStream \
.outputMode("append") \
.format("org.elasticsearch.spark.sql") \
.option("checkpointLocation", "/tmp/") \
.option("es.resource", "logs/raw") \
.option("es.nodes", "localhost") \
.start()
query.awaitTermination()
问题是,我无法调试它,代码正在运行,但没有任何内容写入ES(在流模式下)。
谢谢,
答案 0 :(得分:1)
最终确实对我有用,问题是技术问题(需要vpn)
query = df.writeStream \
.outputMode("append") \
.queryName("writing_to_es") \
.format("org.elasticsearch.spark.sql") \
.option("checkpointLocation", "/tmp/") \
.option("es.resource", "index/type") \
.option("es.nodes", "localhost") \
.start()
query.awaitTermination()
答案 1 :(得分:1)
代码:
val stream = df
.writeStream
.option("checkpointLocation", checkPointDir)
.format("es")
.start("realtime/data")
SBT依赖关系:
libraryDependencies += "org.elasticsearch" %% "elasticsearch-spark-20" % "6.2.4"
答案 2 :(得分:0)
您无法将流式输出写入elasticsearch sink,您可以写入kafka并通过logstash加载到elasticsearch中