标签: spark-submit

如何停止在火花控制台上显示INFO消息?

我想停止火花壳上的各种消息.

我试图编辑该log4j.properties文件以阻止这些消息.

这是内容 log4j.properties

# Define the root logger with appender file
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n

# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.eclipse.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
Run Code Online (Sandbox Code Playgroud)

但是消息仍在控制台上显示.

以下是一些示例消息

15/01/05 15:11:45 INFO SparkEnv: Registering BlockManagerMaster
15/01/05 15:11:45 INFO DiskBlockManager: Created local directory at /tmp/spark-local-20150105151145-b1ba
15/01/05 15:11:45 INFO MemoryStore: MemoryStore started with capacity 0.0 B.
15/01/05 15:11:45 INFO ConnectionManager: Bound socket to port 44728 with id = ConnectionManagerId(192.168.100.85,44728)
15/01/05 …
Run Code Online (Sandbox Code Playgroud)

log4j apache-spark spark-submit

168
推荐指数
12
解决办法
16万
查看次数

将jar添加到Spark作业 - spark-submit

真的...已经讨论了很多.

然而,有很多歧义和一些答案提供...包括在jar/executor /驱动程序配置或选项中复制jar引用.

模糊和/或省略的细节

对于每个选项,应澄清含糊不清,不清楚和/或省略的细节:

  • ClassPath如何受到影响
    • 司机
    • 执行程序(用于运行的任务)
    • 一点也不
  • 分隔字符:逗号,冒号,分号
  • 如果提供的文件是自动分发的
    • 任务(每个执行者)
    • 用于远程驱动程序(如果以群集模式运行)
  • 接受的URI类型:本地文件,hdfs,http等
  • 如果复制公共位置,该位置是(hdfs,local?)

它影响的选项:

  1. --jars
  2. SparkContext.addJar(...) 方法
  3. SparkContext.addFile(...) 方法
  4. --conf spark.driver.extraClassPath=... 要么 --driver-class-path ...
  5. --conf spark.driver.extraLibraryPath=..., 要么 --driver-library-path ...
  6. --conf spark.executor.extraClassPath=...
  7. --conf spark.executor.extraLibraryPath=...
  8. 不要忘记,spark-submit的最后一个参数也是一个.jar文件.

我知道在哪里可以找到主要的spark文档,特别是关于如何提交,可用的选项以及JavaDoc.然而,这对我来说仍然有一些漏洞,尽管它也有部分回答.

我希望它不是那么复杂,有人可以给我一个清晰简洁的答案.

如果我从文档中猜测,似乎--jarsSparkContext addJar,addFile方法是自动分发文件的方法,而其他选项只是修改ClassPath.

假设为简单起见,我可以安全地使用3个主要选项同时添加其他应用程序jar文件:

spark-submit --jar additional1.jar,additional2.jar \
  --driver-library-path additional1.jar:additional2.jar \
  --conf spark.executor.extraLibraryPath=additional1.jar:additional2.jar \
  --class MyClass main-application.jar
Run Code Online (Sandbox Code Playgroud)

找到一篇关于一篇文章答案的好文章.然而没有什么新学到的 海报确实很好地评论了本地驱动程序(纱线客户端)和远程驱动程序(纱线群集)之间的区别.记住这一点非常重要.

java scala jar apache-spark spark-submit

139
推荐指数
2
解决办法
9万
查看次数

Spark-submit --py-files 发出警告 RuntimeWarning: 无法将 'spark.submit.pyFiles' 中指定的文件 <abc.py> 添加到 Python 路径:

我们有一个基于 pyspark 的应用程序,我们正在执行 Spark 提交,如下所示。应用程序正在按预期工作,但是我们看到一条奇怪的警告消息。有什么办法可以处理这个问题或者为什么会出现这种情况?

注意:该群集是 Azure HDI 群集。

spark-submit --master yarn  --deploy-mode cluster --jars file:/<localpath>/* --py-files pyFiles/__init__.py,pyFiles/<abc>.py,pyFiles/<abd>.py  --files files/<env>.properties,files/<config>.json main.py
Run Code Online (Sandbox Code Playgroud)

看到的警告是:

warnings.warn( /usr/hdp/current/spark3-client/python/pyspark/context.py:256: RuntimeWarning: 无法添加文件 [file:///home/sshuser/project/pyFiles/abc.py] 指定在“spark.submit.pyFiles”中到Python路径:
/mnt/resource/hadoop/yarn/local/usercache/sshuser/filecache/929

以上警告针对所有文件,即 abc.py、abd.py 等(传递给 --py-files 的)

pyspark spark-submit

15
推荐指数
1
解决办法
2233
查看次数

如何在群集上保存文件

我使用连接到集群,然后使用ssh将程序发送到集群

spark-submit --master yarn myProgram.py
Run Code Online (Sandbox Code Playgroud)

我想将结果保存在文本文件中,我尝试使用以下行:

counts.write.json("hdfs://home/myDir/text_file.txt")
counts.write.csv("hdfs://home/myDir/text_file.csv")
Run Code Online (Sandbox Code Playgroud)

但是,它们都不起作用.程序结束,我找不到文本文件myDir.你知道我怎么能这样做吗?

还有,有没有办法直接写到我的本地机器?

编辑:我发现该home目录不存在所以现在我将结果保存为: counts.write.json("hdfs:///user/username/text_file.txt") 但是这会创建一个名为的目录text_file.txt,里面我有很多文件,里面有部分结果.但是我想要一个包含最终结果的文件.我有什么想法可以做到这一点?

python hdfs apache-spark pyspark spark-submit

10
推荐指数
1
解决办法
2191
查看次数

Pyspark:使用spark-submit运行文件时执行Jupyter命令时出错

我能够运行pyspark并在Jupyter笔记本上运行脚本.但是当我尝试使用spark-submit从终端运行文件时,收到此错误:

执行Jupyter命令文件路径时出错[Errno 2]没有这样的文件或目录

任何人都可以帮我解决配置错误吗?

我正在使用Python 2.7和Spark 1.6

pyspark jupyter-notebook spark-submit

9
推荐指数
1
解决办法
2931
查看次数

如何通过Spark提交传递外部参数

在我的应用程序中,我需要连接到数据库,所以我需要在提交应用程序时传递IP地址和数据库名称.

我按如下方式提交申请:

./spark-submit --class class name --master spark://localhost:7077 \
--deploy-mode client /home/hadoop/myjar.jar
Run Code Online (Sandbox Code Playgroud)

java apache-spark spark-submit

8
推荐指数
1
解决办法
1万
查看次数

Spark驱动程序内存和执行程序内存

我是Spark的初学者,我正在运行我的应用程序从文本字段中读取14KB数据,执行一些转换和操作(收集,收集地图)并将数据保存到数据库

我在我的macbook中本地运行它有16G内存,有8个逻辑内核.

Java Max堆设置为12G.

这是我用来运行应用程序的命令.

bin/spark-submit --class com.myapp.application --master local [*] - executor-memory 2G --driver-memory 4G /jars/application.jar

我收到以下警告

2017-01-13 16:57:31.579 [Executor task launch worker -8hread] WARN org.apache.spark.storage.MemoryStore - 没有足够的空间来缓存内存中的rdd_57_0!(到目前为止计算的26.4 MB)

任何人都可以指导我这里出了什么问题,我怎样才能提高性能?还有如何优化漏斗?这是我本地系统中发生的泄漏的视图

在此输入图像描述

java apache-spark spark-streaming spark-submit

8
推荐指数
2
解决办法
2万
查看次数

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

我最近发现了一种在Apache Spark中使用logback而不是log4j的方法(两者都用于本地使用spark-submit).然而,最后一块遗失了.

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

到目前为止我有什么

基本上,检查系统属性logback.configurationFile,但加载logback.xml从我/src/main/resources/以防万一:

// the same as default: https://logback.qos.ch/manual/configuration.html
private val LogbackLocation = Option(System.getProperty("logback.configurationFile"))
// add some default logback.xml to your /src/main/resources
private lazy val defaultLogbackConf = getClass.getResource("/logback.xml").getPath

private def getLogbackConfigPath = {
   val path = LogbackLocation.map(new File(_).getPath).getOrElse(defaultLogbackConf)
   logger.info(s"Loading logging configuration from: $path")
   path
}
Run Code Online (Sandbox Code Playgroud)

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

val sc = SparkContext.getOrCreate(conf)
sc.addFile(getLogbackConfigPath)
Run Code Online (Sandbox Code Playgroud)

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

和谁玩 spark-submit

spark-submit \
  ...
  --master yarn \
  --class com.company.Main\
  /path/to/my/application-fat.jar \ …
Run Code Online (Sandbox Code Playgroud)

java scala apache-spark apache-spark-2.0 spark-submit

8
推荐指数
1
解决办法
7274
查看次数

如何从Lambda函数执行amazon EMR上的spark提交?

我想基于S3上的文件上传事件在AWS EMR集群上执行spark submit作业.我正在使用AWS Lambda函数来捕获事件,但我不知道如何从Lambda函数提交EMR集群上的spark提交作业.

我搜索过的大多数答案都谈到了在EMR集群中添加一个步骤.但我不知道我是否可以在添加的步骤中添加任何步骤来激发"spark submit --with args".

amazon-web-services amazon-emr apache-spark aws-lambda spark-submit

8
推荐指数
1
解决办法
1万
查看次数

Spark 提交到 kubernetes:执行程序未拉取包

我正在尝试使用 Spark-submit 将我的 Pyspark 应用程序提交到 Kubernetes 集群 (Minikube):

./bin/spark-submit \
   --master k8s://https://192.168.64.4:8443 \
   --deploy-mode cluster \
   --packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.1 \
   --conf spark.kubernetes.container.image='pyspark:dev' \
   --conf spark.kubernetes.container.image.pullPolicy='Never' \
   local:///main.py
Run Code Online (Sandbox Code Playgroud)

应用程序尝试访问部署在集群内的 Kafka 实例,因此我指定了 jar 依赖项:

--packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.1
Run Code Online (Sandbox Code Playgroud)

我正在使用的容器映像基于我使用实用程序脚本构建的容器映像。我已经将我的应用程序所需的所有 python 依赖项打包在其中。

驱动程序正确部署并获取 Kafka 包(如果需要,我可以提供日志)并在新的 pod 中启动执行器。

但随后执行器 Pod 崩溃了:

ERROR Executor: Exception in task 0.0 in stage 1.0 (TID 1)
java.lang.ClassNotFoundException: org.apache.spark.sql.kafka010.KafkaBatchInputPartition
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 java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.spark.serializer.JavaDeserializationStream$$anon$1.resolveClass(JavaSerializer.scala:68)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1986)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1850)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2160)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2405) …
Run Code Online (Sandbox Code Playgroud)

python apache-spark kubernetes pyspark spark-submit

7
推荐指数
1
解决办法
2060
查看次数