Apache spark 不能';t解决spark submit py文件对elasticsearch库的依赖关系
我正在尝试使用结构化流(pyspark)将平面文件中的数据流到弹性搜索中 Spark-2.4.6 Scala-2.11.0 Hadoop-2.7 在尝试通过指定依赖项提交作业时,如下所示,它可以正常工作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,它可以移动到
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)。我不确定我做错了什么!!