【问题标题】:How to configure an external package into Apache Spark?如何将外部包配置到 Apache Spark 中?
【发布时间】:2017-06-04 04:17:51
【问题描述】:

我正在构建一个使用 spark-submit 命令执行的 Python 脚本,以从 MongoDB 集合中检索数据并处理获取的数据以生成分析。我正在使用 MongoDB Spark 连接器使用 --packages 选项查询 MongoDB 集合。

但我需要将包配置到 Apache Spark 中并使用 spark submit 命令执行 Python 脚本,而无需 --packages 选项。

【问题讨论】:

  • 为什么要避免使用 --packages 选项?问问我们能不能绕着它走。

标签: python mongodb apache-spark pyspark


【解决方案1】:

来自http://spark.apache.org/docs/latest/submitting-applications.html

对于 Python,您可以使用 spark-submit 的 --py-files 参数添加 .py、.zip 或 .egg 文件以与您的应用程序一起分发。如果您依赖多个 Python 文件,我们建议将它们打包成 .zip 或 .egg。

因此您可以编写自己的数据加载逻辑层。但是,使用现成的包有很多优点。也许你可以解释为什么你不能使用--packages

编辑

根据聊天记录,PO 不能使用--packages 的唯一原因是他的jar 因为mongodb 存储在本地(当然不在$PATH 中)。在这种情况下,提供--repositories /PATH/TO/JAR 应该可以解决问题。

【讨论】:

  • 感谢您回答我的问题。我需要从 php 脚本调用 spark 应用程序,并且在指定 --packages 选项时不会调用 spark 应用程序。因此我需要将包配置为 apache spark 本身。跨度>
  • 怎么会发生“指定 --packages 选项时未调用 spark 应用程序”的情况?
  • 以下是 php 代码 sn-p $result=shell_exec('./bin/spark-submit --master local[*] --packages org.mongodb.spark:mongo-spark-connector_2. 10:1.0.0 示例/src/main/python/demo.py'); print_r($result);
  • 当 --packages 选项指定到 spark-submit 命令但不是来自外部应用程序时,在 shell 中调用 Spark 应用程序
  • 当你运行你的 PHP sn-p 时它给出了什么错误?
猜你喜欢
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
相关资源
最近更新 更多