elasticsearch,spark-streaming,spark-structured-streaming,Apache Spark,elasticsearch,Spark Streaming,Spark Structured Streaming" /> elasticsearch,spark-streaming,spark-structured-streaming,Apache Spark,elasticsearch,Spark Streaming,Spark Structured Streaming" />

Apache spark 不能';t解决spark submit py文件对elasticsearch库的依赖关系

Apache spark 不能';t解决spark submit py文件对elasticsearch库的依赖关系,apache-spark,elasticsearch,spark-streaming,spark-structured-streaming,Apache Spark,elasticsearch,Spark Streaming,Spark Structured Streaming,我正在尝试使用结构化流(pyspark)将平面文件中的数据流到弹性搜索中 Spark-2.4.6 Scala-2.11.0 Hadoop-2.7 在尝试通过指定依赖项提交作业时,如下所示,它可以正常工作 spark-submit --packages org.elasticsearch:elasticsearch-hadoop:7.7.1 FileStructuredStreaming_ES.py 问题是: 我无法使用的生产环境--包(限于internet)。我正在尝试找到jar,它可以移动到

我正在尝试使用结构化流(pyspark)将平面文件中的数据流到弹性搜索中

Spark-2.4.6

Scala-2.11.0

Hadoop-2.7

在尝试通过指定依赖项提交作业时,如下所示,它可以正常工作

spark-submit --packages org.elasticsearch:elasticsearch-hadoop:7.7.1 FileStructuredStreaming_ES.py
问题是: 我无法使用的生产环境--包(限于internet)。我正在尝试找到jar,它可以移动到集群中,而不是使用包,但无法实现,尝试了所有可能的方法,如

--py文件/--archives/--jars

以下提交spark作业的方式失败,错误如下:

spark-submit --py-files elasticsearch-hadoop-7.7.1.jar /workspace/scripts/pyspark/FileStructuredStreaming_ES.py
错误跟踪

java.lang.ClassNotFoundException: Failed to find data source: 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:657)
at org.apache.spark.sql.streaming.DataStreamWriter.start(DataStreamWriter.scala:307)
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.elasticsearch.spark.sql.DefaultSource
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$20$$anonfun$apply$12.apply(DataSource.scala:634)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$20$$anonfun$apply$12.apply(DataSource.scala:634)
    at scala.util.Try$.apply(Try.scala:192)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$20.apply(DataSource.scala:634)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$20.apply(DataSource.scala:634)
    at scala.util.Try.orElse(Try.scala:84)
    at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:634)
    ... 12 more

我是否遗漏了什么,有没有办法找到我需要使用的库/罐?我使用的是一个官方的罐子?

你的意思是,当你用
--jars
传递它时,你从中得到的罐子并不能解决你的问题?是的,没错。我试过使用--archives(完整zip)、--jar(特定于所需的jar)、--py文件(特定于jar)。我不确定我做错了什么!!