spark查询异常记录

来源:互联网 发布:海岛奇兵建筑升级数据 编辑:程序博客网 时间:2024/05/18 03:03

1、报错说没把集群配置上传到hdfs,但其实问题出在自己写的pyspark代码有问题。
这里写图片描述
其实错误的地方是路径多写了一个单引号:
这里写图片描述

2、之前运行良好的pyspark程序突然就无法运行
报错信息1 OOM,java堆溢出,那到底是container不足还是master不足?:
17/03/16 10:26:31 ERROR ActorSystemImpl: Uncaught fatal error from thread [sparkDriver-akka.remote.default-remote-dispatcher-5] shutting down ActorSystem [sparkDriver]
java.lang.OutOfMemoryError: Java heap space
at com.google.protobuf.AbstractMessageLite.toByteArray(AbstractMessageLite.java:62)
at akka.remote.transport.AkkaPduProtobufCodec$.constructPayload(AkkaPduCodec.scala:145)
at akka.remote.transport.AkkaProtocolHandle.write(AkkaProtocolTransport.scala:182)
at akka.remote.EndpointWriter.writeSend(Endpoint.scala:756)
报错信息2 可以看到AMcontainer分配的内存很小:
129 17/03/18 19:13:45 INFO Client: Verifying our application has not requested more than the maximum memory capability of the cluster (16384 MB per container)
130 17/03/18 19:13:45 INFO Client: Will allocate AM container, with 896 MB memory including 384 MB overhead
但是在driver、container的配置中内存都配了十几G,为什么会这么小?
配置:
–executor-memory 8G
–driver-memory 10G
–conf spark.yarn.executor.memoryOverhead=3072
–conf spark.yarn.driver.memoryOverhead=3072
原因是sparkclient模式下运行不主动配置am的内存参数,am的内存就如上为800多兆,而运行在cluster模式下就会和driver设置一样。所以,把client模式换为cluster模式后就正常了。而至于之前可以跑,之后不可以跑,可能是数据规模发生变化,导致原先不会溢出的程序溢出了。
关于spark,yarn内存(以及上面的问题)讲的很好,了解方式也值得学习的博客:
http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html

3、本地安装scala-spark遇到过的问题
3.1 找不到程序运行的master

在运行Spark的测试程序SparkPi时,点击运行,出现了如下错误:
Exception in thread “main” org.apache.spark.SparkException: A master URL must be set in your configuration
at org.apache.spark.SparkContext.(SparkContext.Scala:185)
at SparkPi$.main(SparkPi.scala:12)
at SparkPi.main(SparkPi.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Using Spark’s default log4j profile: org/apache/spark/log4j-defaults.properties

从提示中可以看出找不到程序运行的master,此时需要配置环境变量。

传递给spark的master url可以有如下几种:

local 本地单线程
local[K] 本地多线程(指定K个内核)
local[*] 本地多线程(指定所有可用内核)
spark://HOST:PORT 连接到指定的 Spark standalone cluster master,需要指定端口。
mesos://HOST:PORT 连接到指定的 Mesos 集群,需要指定端口。
yarn-client客户端模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。
yarn-cluster集群模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。

点击edit configuration,在左侧点击该项目。在右侧VM options中输入“-Dspark.master=local”,指示本程序本地单线程运行,再次运行即可。
这里写图片描述

也可以这样:
def main(args: Array[String]): Unit = { val conf = new SparkConf() conf.setAppName(“ScalaTest”) .setMaster(“spark://master:7077”) val sc = new SparkContext(conf) val raw = sc.parallelize(1 to 9, 3)

3.2、运行时压缩的jar包snappy找不到
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c4224615143aa2f024291b06ce963c215afe170bf7a6613464587ef686cf8941dabd932e2a9c6269304a891d4fc419de8a1a768362db4de8df41b4fea32593df898fc854229200412997f1fb4d0063dd6e804a6ab3e6ca085e4811cafa3012e858076bcc651a&p=882a9645d79508e940a5c7710f5e8f&newp=8b2a970486cc42af59abdf25504f90231610db2151d6c44324b9d71fd325001c1b69e7ba2c261404d5c0766c04ac4d5debf43274341766dada9fca458ae7c469&user=baidu&fm=sc&query=no+snappyjava+in+java%2Elibrary%2Epath&qid=9edb18ac00329216&p1=2

0 0
原创粉丝点击