Apache spark Pypark执行人';向avro发送时,任务限制为6项
这就是我的简单pyspark应用程序的功能:Apache spark Pypark执行人';向avro发送时,任务限制为6项,apache-spark,pyspark,Apache Spark,Pyspark,这就是我的简单pyspark应用程序的功能: 加入200行,包含2000万行 计算两个字段之间的余弦距离 过滤掉余弦相似度低于0.9的 使用avro格式保存筛选结果(0.9以上) filtered_df.write.format('com.databricks.spark.avro').save('hdfs://path/result') 我正在使用spark的数据帧来实现这一点(SQLContext)。我的集群信息如下: 13TB RAM(利用率为50%) 2K+vcores(利用
- 加入200行,包含2000万行
- 计算两个字段之间的余弦距离
- 过滤掉余弦相似度低于0.9的
- 使用avro格式保存筛选结果(0.9以上)
filtered_df.write.format('com.databricks.spark.avro').save('hdfs://path/result')
- 13TB RAM(利用率为50%)
- 2K+vcores(利用率60%)
spark-submit --num-executors 15 --executor-cores 5 --executor-memory 13G test.py
查看spark的UI,我看到一些包含200个任务的作业。但是,“保存到avro”步骤只包含6个并行运行的任务。上次运行此操作时,大约需要1天才能完成。我如何优化它?任何帮助都将不胜感激。我是新手。我本来想把它转换成RDD map reduce,但读到数据帧操作实际上更有效 在保存之前尝试重新分区数据,看看是否有效!不过,我没有和RDD合作。我正在使用DataFrame。DataFrame也可以在最后重新分区。底层主集合仅为RDD。我尝试使用coalesce:filtered_df.coalesce(100).write.format('com.databricks.spark.avro')。save('hdfs://path/result“),但最后还是有6个任务。请附上DAG可视化和任务界面,也许我们可以从那里得到一些帮助!在保存之前尝试重新分区数据,看看是否有效!不过,我没有和RDD合作。我正在使用DataFrame。DataFrame也可以在最后重新分区。底层主集合仅为RDD。我尝试使用coalesce:filtered_df.coalesce(100).write.format('com.databricks.spark.avro')。save('hdfs://path/result“),但最后还是有6个任务。请附上DAG可视化和任务界面,也许我们可以从那里得到一些帮助!