我正在使用spark1.3.0和python。我有一个应用程序,它使用以下命令读取avro文件:
conf = None
rddAvro = sc.newAPIHadoopFile(
fileAvro,
"org.apache.avro.mapreduce.AvroKeyInputFormat",
"org.apache.avro.mapred.AvroKey",
"org.apache.hadoop.io.NullWritable",
KeyConverter="org.apache.spark.examples.pythonconverters.AvroWrapperToJavaConverter",
conf=conf)
在我的 conf/spark-defaults.conf
我有以下几行:
spark.driver.extraClassPath /pathto/spark-1.3.0/lib/spark-examples-1.3.0-hadoop2.4.0.jar
我设置了一个由三台机器组成的集群(两台主机和一台从机):
如果我跑了 spark-submit --master local
在主人身上,它起作用了
如果我跑了 spark-submit --master local
在任何一个奴隶身上,它都有效
如果我跑了 sbin/start-all.sh
然后 spark-submit --master spark://cluster-data-master:7077
它失败并出现以下错误:
java.lang.ClassNotFoundException:
org.apache.spark.examples.pythonconverters.AvroWrapperToJavaConverter
我可以在本地模型中通过注解 .conf
文件。我试过了 spark-submit
适当的 --driver-class-path
但它也不起作用!
用解决方案更新
以下是对我有效的请求:
我用 spark-submit --driver-class-path path/to/appropriate.jar
调用脚本时
我没有任何与jar文件相关的文档 spark-defaults.conf file
我使用 SparkConf().set(...).set("spark.executor.extraClassPath","path/to/appropriate.jar")
在python主文件中。
我完全放弃了使用conf文件来设置路径。我没有试过 --jars
然而,正如下面范法布所说,这一论点或许值得一试。
1条答案
按热度按时间isr3a4wc1#
试着用“主Yarn簇”选项运行它
根据数据的大小,您可以通过向以下配置参数添加更多数字来为每个容器分配更多内存:
yarn.nodemanager.resource.memory-mb内存
yarn.scheduler.maximum-allocation-mb最大分配
spark submit--master warn client--num executors 5--driver cores 8--driver memory 50g--executor memory 44g code\u to \u run.py