【发布时间】:2017-11-10 05:04:54
【问题描述】:
当我尝试将 spark 数据帧写入 mongodb 时,我发现 spark 只创建一个任务来执行此操作。这会导致性能不佳,因为即使在作业中分配了许多执行器,实际上也只有一个执行器在运行。
我的部分 pyspark 代码:
df.write.format("com.mongodb.spark.sql.DefaultSource") \
.mode("append") \
.option("spark.mongodb.output.uri", connectionString) \
.save()
在这种情况下可以触发运行多个任务吗?谢谢
火花提交:
spark-submit --master yarn --num-executors 3 --executor-memory 5g --jars $JARS_PATH/mongo-java-driver-3.5.0.jar,$JARS_PATH/mongodb-driver-core-3.5.0.jar,$JARS_PATH/mongo-spark-connector_2.11-2.2.1.jar spark-mongo.py
我找到了包含此信息的日志
INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, linxtd-itbigd04, executor 1, partition 0, PROCESS_LOCAL, 4660 bytes)
INFO BlockManagerMasterEndpoint: Registering block manager linxtd-itbigd04:36793 with 1458.6 MB RAM, BlockManagerId(1, linxtd-itbigd04, 36793, None)
INFO BlockManagerInfo: Added broadcast_0_piece0 in memory on linxtd-itbigd04:36793 (size: 19.7 KB, free: 1458.6 MB)
INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 17364 ms on linxtd-itbigd04 (executor 1) (1/1)
【问题讨论】:
-
问题是?你没有问任何问题。你在这里写的是你做了什么和你“想”什么的“陈述”。你会问什么?
-
分享您的 spark 提交命令和您的环境详细信息
-
@Barry 我们在这里讨论什么类型的任务?如果您的意思是保存数据,通常情况就是这样。瓶颈将是网络 IO 以及 mongo 在崩溃之前可以摄取多少数据。
-
@eliasah 这些任务是 Spark 作业中的 Spark 任务。我希望我可以使用 Spark 将我的数据从 MSSQL 导入 MongoDB,并在我的集群中进行分布式处理(因为我有 10 多亿条记录)。但我发现 Spark 只创建一个任务和一个任务并在一个节点上运行。这是我的问题。
标签: mongodb apache-spark pyspark