简体   繁体   English

pyspark - 结构化流式传输到弹性搜索

[英]pyspark - structured streaming into elastic search

Im working on a code in which i'm trying to stream data into elastic search using structured streaming by pySpark.我正在编写一个代码,其中我试图使用 pySpark 的结构化流将数据流式传输到弹性搜索中。

Spark version : 3.0.0 Installed Mode : pip Spark 版本:3.0.0 安装模式:pip

query = inpJoinDF.writeStream \
.outputMode("append") \
.queryName("writing_to_es") \
.format("org.elasticsearch.spark.sql") \
.option("checkpointLocation", "es_checkpoint/") \
.option("es.resource", "spark_test/doc") \
.option("es.nodes", "localhost") \
.start()

Also have tried by adding package & format也尝试通过添加包和格式

pyspark --packages org.elasticsearch:elasticsearch-hadoop:7.7.1
format("es")

Below is the error lines:以下是错误行:

line 328, in get_return_value py4j.protocol.Py4JJavaError: An error occurred while calling o57.start.第 328 行,在 get_return_value py4j.protocol.Py4JJavaError 中:调用 o57.start 时发生错误。 : java.lang.ClassNotFoundException: Failed to find data source: org.elasticsearch.spark.sql. :java.lang.ClassNotFoundException:无法找到数据源:org.elasticsearch.spark.sql。 Please find packages at http://spark.apache.org/third-party-projects.html at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:674) at org.apache.spark.sql.streaming.DataStreamWriter.start(DataStreamWriter.scala:342) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) at py4j.Gateway.invoke(Gateway.java:282) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:238) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.ClassNotFoundException: org.elasti请在http://spark.apache.org/third-party-projects.html org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:674) org.apache 上找到包。 spark.sql.streaming.DataStreamWriter.start(DataStreamWriter.scala:342) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine) .java:357) 在 py4j.Gateway.invoke(Gateway.java:282) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j .GatewayConnection.run(GatewayConnection.java:238) 在 java.lang.Thread.run(Thread.java:748) 引起:java.lang.ClassNotFoundException:org.elasti csearch.spark.sql.DefaultSource at java.net.URLClassLoader.findClass(URLClassLoader.java:382) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.apache.spark.sql.execution.datasources.DataSource$.$anonfun$lookupDataSource$5(DataSource.scala:648) at scala.util.Try$.apply(Try.scala:213) at org.apache.spark.sql.execution.datasources.DataSource$.$anonfun$lookupDataSource$4(DataSource.scala:648) at scala.util.Failure.orElse(Try.scala:224) at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:648) ... 12 more csearch.spark.sql.DefaultSource 在 java.net.URLClassLoader.findClass(URLClassLoader.java:382) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 java.lang.ClassLoader.loadClass(ClassLoader.java: 357) 在 org.apache.spark.sql.execution.datasources.DataSource$.$anonfun$lookupDataSource$5(DataSource.scala:648) 在 scala.util.Try$.apply(Try.scala:213) 在 org.apache .spark.sql.execution.datasources.DataSource$.$anonfun$lookupDataSource$4(DataSource.scala:648) at scala.util.Failure.orElse(Try.scala:224) at org.apache.spark.sql.execution。 datasources.DataSource$.lookupDataSource(DataSource.scala:648) ... 12 更多

Thanks 🙏 for helping out!!谢谢🙏帮忙!!

Thank you so much, i was using spark 3 which is built on scala 2.12, unfortunately elasticsearch-hadoop jar is supported till 2.11 version of scala.非常感谢,我使用的是基于 Scala 2.12 的 spark 3,不幸的是,在 2.11 版本的 Scala 之前支持 elasticsearch-hadoop jar。 I have downgraded my spark version to 2.4.6 which is built on scala 2.11.我已将我的 spark 版本降级到 2.4.6,它是基于 Scala 2.11 构建的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM