为什么在spark submit命令中只使用一个内核而不是32个?

q0qdq0h2  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(415)

嗨,谢谢你的帮助,
我知道有很多关于这个问题的主题,我读了很多,尝试了很多解决方案,但是什么都没有发生,我的spark提交工作仍然是在我的32个可用核心上只使用一个核心。
使用spark submit命令,我启动了一个pyspark脚本。这个pyspark脚本对许多Parquet文件执行spark.sql命令(大约6000个文件,每个文件大约6m,总共有6亿个数据库元组)。
我使用一个aws示例,它有32个cpu和128个go,还有一个2to ebs dd,上面存储着我的Parquet文件(它不是一个hdfs文件系统)
我并不是以主版本的形式启动spark,只是在单个ec2示例的独立解决方案中使用它。
一切都很好,但进程需要2小时只用一个核心对我的32个核心,所以我希望减少进程时间使用所有可用的核心!我启动pyspark脚本时是这样的:

spark-submit --driver-memory 96G --executor-cores 24 ./my_pyspark.py input.txt output.txt

我试着用local添加主参数,如下所示:

spark-submit --master local[24] --driver-memory 96G ./my_pyspark.py input.txt output.txt

我尝试将spark作为服务器启动,并将url提供给主参数:

spark-class org.apache.spark.deploy.master.Master
    spark-submit --master spark://10.0.1.20:7077 --driver-memory 96G --executor-cores 24 ./my_pyspark.py input.txt output.txt

但这些解决方案都不管用。通过htop查看流程,我发现只使用了一个内核。我错过了什么???桑克斯

lpwwtiir

lpwwtiir1#

你的命令是错误的。
您不应该为驱动程序分配96g,而应该指定每个执行器的执行器数和核心数。
例如,您可以尝试:

spark-submit --driver-memory 8G --num-executors 15 --executors-memory 7 --executor-cores 2 ./my_pyspark.py input.txt output.txt

你也许应该用Yarn作为资源经理。 --master yarn 另外,在sparkcontext中定义master(“local”),重写spark submit命令,应该将其从代码中删除。

相关问题