问题标签 [spark-submit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1509 浏览

java - 未考虑 JVM 选项,java 程序的 spark-submit

使用 spark-submit 我正在启动一个 java 程序。但是,我正在为 JVM 设置未考虑的 java 参数。我正在尝试指定最大/最小无堆比率。

但是,即使存在参数(基于 visualvm),内存图也显示它们不会影响正在运行的程序。

这是我要启动的命令:

"/usr/jdk1.8.0_131/bin/java" "-Xmx4096M" "-Dspark.driver.extraJavaOptions=-XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=30 -agentlib:jdwp=transport=dt_socket,server=y,暂停=n,地址=5005""-Dspark.executor.extraJavaOptions=-XX:MinHeapFreeRatio=30 -XX:MaxHeapFreeRatio=30""-XX:MinHeapFreeRatio=30""-XX:MaxHeapFreeRatio=30"

如您所见,我尝试在驱动程序、执行程序和 java 命令上设置参数。

这是来自 visualvm 的参数: 在此处输入图像描述

这是图表:在此处输入图像描述

需要明确的是,我要改进的是“未使用”的堆大小。

使用这些参数(在 spark 之外)启动程序时,它的行为正确。

0 投票
2 回答
2903 浏览

mongodb - 无法在身份验证模式下使用 Mongo 连接 Mongo-Spark 连接器

我正在尝试通过 Mongo-Spark 连接器使用远程机器上的 MongoDB 实例运行 spark-submit 作业。

当我在没有--auth标志的情况下启动 mongod 服务并运行如下命令时spark-submit

一切都像魅力一样。

但是当我使用--auth标志运行 mongod 服务时,并运行spark-submit如下:

我收到这些错误:

我检查了凭据和角色,一切都很好。无法弄清楚我做错了什么......

0 投票
1 回答
128 浏览

python - spark将s3a文件加载为df,运行哪个命令?

我有一个有效的 json 文件:

我可以在本地火花机上成功导入

我有一个 shell 脚本来提交作业

到目前为止一切顺利,例如 DF.show(1) 工作正常。

现在我正在尝试从 s3a 链接加载(其中包含与 myfile.json 完全相同的数据)。

我试过了

我仍然运行包含相同命令的 shell 脚本,即

但是这次它不起作用,我收到以下错误

我的shell脚本错了吗?

PS:我刚从别人那里得到了 s3a 链接。所以它不在我的 AWS 账户上。我假设即使我不知道任何访问密钥或密钥,我仍然可以从该链接导入数据......

0 投票
4 回答
18715 浏览

scala - 在 Scala 中创建 SparkSession 对象以在 unittest 和 spark-submit 中使用的最佳实践

我试图写一个从 DataFrame 到 DataFrame 的转换方法。我也想通过scalatest来测试它。

如您所知,在带有 Scala API 的 Spark 2.x 中,您可以按如下方式创建 SparkSession 对象:

此代码适用于单元测试。但是,当我使用 spark-submit 运行此代码时,集群选项不起作用。例如,

不创建任何执行者。

我发现当我删除config("master", "local[2]")部分上述代码时应用了 spark-submit 参数。但是,没有大师设置单元测试代码不起作用。

我试图将火花(SparkSession)对象生成部分拆分为测试和主要部分。但是有太多的代码块需要 spark,例如import spark.implicit,_spark.createDataFrame(rdd, schema).

是否有任何最佳实践来编写代码来创建用于测试和运行 spark-submit 的 spark 对象?

0 投票
1 回答
283 浏览

java - 通过 spark-submit 提交时,Apache Beam 作业挂起

我只是想在本地 spark 设置中执行 Apache Beam 示例代码。如本页所述,我生成了源代码并构建了包。并使用 spark-submit 提交 jar,如下所示,

代码被提交并开始执行。但卡在 step Evaluating ParMultiDo(ExtractWords)。以下是提交作业后的日志。

我无法找到任何错误消息。有人可以帮忙找出问题所在吗?

编辑:我也尝试使用以下命令,

该作业现在停留在INFO BlockManagerMasterEndpoint: Registering block manager 192.168.0.2:59049 with 366.3 MB RAM, BlockManagerId(0, 192.168.0.2, 59049, None). 下面附上 Spark History & Dashboard 的屏幕截图。仪表板显示作业正在运行,但没有任何进展。

在此处输入图像描述 在此处输入图像描述

0 投票
0 回答
405 浏览

jar - 带有 spark-submit 的外部 jar 库

我有一个使用外部 jar 库的 scala 应用程序。如果将应用程序 jar 复制到 hdfs,我该如何使用它?

我是从本地开始的,--conf spark.driver.extraClassPath=./lib/*但如果我使用 hdfs 链接,它将无法正常工作。

0 投票
1 回答
12083 浏览

java - 将系统属性传递给 spark-submit 并从类路径或自定义路径读取文件

我最近找到了一种在 Apache Spark 中使用 logback 而不是 log4j的方法(用于本地使用和spark-submit)。但是,缺少最后一块。

问题是 Spark 非常努力地不查看logback.xml其类路径中的设置。我已经找到了一种在本地执行期间加载它的方法:

到目前为止我所拥有的

基本上,检查 System property ,但从我的logback.configurationFile加载以防万一:logback.xml/src/main/resources/

然后当我初始化我的 SparkContext...

我可以确认它在本地工作。

和谁玩spark-submit

这给出了一个错误:

我认为这是胡说八道,因为首先应用程序找到了文件(根据我的代码)

然后,在

原来……哇!那里没有文件!?有没有搞错!?为什么它在 jar 中找不到文件。它显然在那里,我做了三次检查。

另一种方法spark-submit

所以我想,好吧。我将传递我的文件,因为我可以指定系统属性。我把logback.xml文件放在我的application-fat.jar和旁边:

我得到与上面相同的错误。所以我的设置完全被忽略了!为什么?如何指定

正确地并将其正确地传递给驱动程序和执行程序?

谢谢!

0 投票
1 回答
72 浏览

apache-spark - 为 v1 和 v2 运行 Spark 应用程序

我正在尝试从使用 Spark v1 设置我的 spark 应用程序转移到 v2。在 v1 中,我将使用 Spark Context 和 Spark Config 进行初始化。但是,根据 Spark v2 的最新文档(快速入门指南),我应该使用 Spark Session,建议使用 spark-submit 从 cmd 传递配置(我所提到的所有内容都显示在本页底部附近:https ://spark.apache.org/docs/latest/quick-start.html )。

下面是我的应用程序,其中 Spark Session 的东西 (v2) 被注释掉了,展示了我将如何为 v1 运行东西。如果我这样运行它,我会收到错误“无法初始化 Spark 上下文”。然后,如果我重新安排我的评论以运行 Spark Session (v2) 的内容,并通过将应用程序打包为 JAR 并在 cmd 中使用 spark-submit 来运行它(根据上面已经引用的相同指南),我会收到错误: "无法从 JAR 文件加载主类:/C:/"

我正在更改我的 SPARK_HOME 变量以指向正确的版本,并且我正在更改为构建文件中的适当版本。

这是应用程序:

这是 sbt 构建文件:

0 投票
0 回答
807 浏览

scala - 如何从 IntelliJ Debug 获取匿名函数以使用 Spark (Scala) - 独立集群

这几天我一直在谷歌上搜索。

大图:我正在尝试使用任何必要的方式处理来自 RDD[String] 的 XML 文件——scala-xml、spark-xml,或者滚动我自己的 XML 处理程序,这对于特定的 XML 源来说已经足够好了。我刚刚切换到 Scala 并且对它有点陌生,因为 Python 对于大规模的 Spark 程序变得非常低效,而且我还没有准备好向它投入更多的计算能力。

第一个障碍:我现在似乎无法执行基本的地图功能,并且仍然在 IntelliJ 中调试我的程序。我正在尝试这样做:

当我在 IntelliJ 中运行它时,我得到:

(这就是一行,但我不会让你向右滚动三页。)

显然,worker 没有得到匿名函数的编译代码。

我可以看到编译后的代码存在于:

当它构建 jar 时,我可以在 7-Zip 中打开它,看到 sparkxmltest$$anonfun$3.class 存在于 jar 的根目录中。

在获得大型集群之前,我正在使用部署在本地机器上的独立集群进行测试。我在系统的路径中添加了一个文件夹 C:\sparkjars,这当然是 Master 和 Worker 正在运行的同一系统。我在项目结构中添加了一个包含所有封装依赖项的 uber JAR,并将其设置为在每个项目构建上构建,然后将其放在该文件夹中。

我将此添加到核心程序中:

所以这是整个程序:(请原谅我进行了一些不必要的导入;这是测试一个更大程序的一小部分,在遇到这个问题之前我已经奇怪地走了很长一段路。)

这是构建:

现在,我不能成为第一个尝试使用匿名函数映射 RDD 的人。如何让工人有权访问匿名函数?

Spark-Submit 似乎确实解决了这个问题(最终),但我无法从 STDOUT 获得任何有用的东西。

(另一个烦人的细节:我无法在没有证书错误的情况下提交火花,直到我在 7-Zip 中打开生成的 JAR 并删除 META-INF\DUMMY.SF 。它给了我:

我花了几个小时从互联网帖子中推断出来。但我不知道如何让 SBT 自动停止包含该证书文件。)

当我提交火花时它确实有效。我想任何成功的运行都足够好。但是您可能会理解为什么这个工作流程会使原型设计和测试变得困难。

当我设置 master: local[*] 时它确实有效但我所做的不仅仅是让我的 Spark 脚本在单个本地机器上运行。就像 Spark-Submit 一样,我想这确实证明了项目中的依赖关系是可以的。(你不会相信我花了多长时间学习如何/我什至不得不检查我对 mavenrepository 的版本依赖关系......但就像我说的,我是一个 n00b。为了那些可能跟随的人:如果你'正在使用 Spark 独立集群,请确保集群中安装的版本与您在程序中使用的版本相匹配,您使用的 Scala 版本与构建 Spark 的版本相匹配,该特定版本的 Scala 是安装并在 Path 上,该 Spark-Core 版本与您正在使用的其他库的依赖项版本匹配,例如 Spark-XML、Spark-SQL 等。

长话短说,这一切都在一起工作。现在我不必要地特别挑剔。出于快速测试的目的,我如何确保我构建的项目在所有 Workers 的类路径上都可用,而不使用 Spark-Submit,即,从 Scala 程序本身内部进行?这可能是 SparkConf 中的一个选项。作为构建的一部分,我应该能够让 IntelliJ 将 uber-JAR 吐出到公共文件夹中。如果我可以从 Scala 程序中将它添加到工作人员的类路径中,那么这意味着我可以在 IntelliJ 中进行快速测试和调试。

如果我使用的是更大的集群,我认为有一个“jars”选项可以让 Master 将我刚刚构建的 JAR 分发给 Workers。但是当他们到达那里时,他们仍然需要继续使用类路径——我怎么知道路径应该是什么,基于 JAR 将存储在 Worker 上的位置?

那么谁能告诉我(以及其他所有尝试做同样事情的人)我如何有效地构建项目并以我随后可以在 IntelliJ 中调试的方式部署它?

0 投票
0 回答
348 浏览

apache-spark - 如何在 spark-submit 中抑制垃圾收集输出

通过 spark-submit 提交作业时,控制台会滚动显示以下输出。这怎么能被禁用?

python 脚本打印我想要关注的其他 [有用] 输出。