我使用Spark-Submit命令在32 Core,64 GB服务器中运行Pyspark应用程序。
应用程序中的步骤:
-
df1 =从CSV文件(Field1,Field2,Field3,Field4)。
-
df2 =负载来自MongoDB(使用Spark Mongo适配器)(field1,field2,field3)。
-
左加入操作(步骤投掷异常Java.lang.outofmemoryerror:Java堆空间
df_output = df1.join(df2, [" field1"," field2"," field3"], " left_outer")。选择("*")
-
使用DF_OUTPUT使用附录模式更新Mongo收集。
conf/spark-env.sh中的配置:
- spark_executor_instances = 10
- spark_executor_cors = 3
- spark_executor_memory = 5GB
- spark_worker_cors = 30
- spark_worker_memory = 50GB
,还有更多参数设置为默认值。
设置主人和1个带有命令的工人。
-
sbin/start-master.sh
-
/sbin/start-slave.sh master_ip
用命令运行脚本
nohup bin/spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:2.0.0 --master master_ip ../test_scripts/test1.py > /logs/logs.out &
该数据集的最佳性能的调整配置参数应该是什么最佳方法,以及如何为任何数据集配置上述参数?
如果遇到内存问题,请考虑一些事情。确保相应地设置下面的参数。
spark.executor.memory = yarn.nodemanager.resource.memory-mb *(spark.executor.cores.cores/yarn.nodemanager.resource.resource.cpu-vcores)
spark.yarn.executor.memoryoverhead = spark.executor.memory
的15-20%尝试将SPARK.SQL.SHUFFLE.OUTPUT.PARTITIONS参数增加到2000年(默认200)。希望这有帮助