我写了一个火花作业,它在操作之下
现在打电话给#5
的foreach这里确实
当我运行这个工作时,它会创建三个火花阶段
第一阶段 - 需要将近45秒。执行一个独特的 第二阶段 - mapToPair和reducebykey =需要1.5分钟
第三阶段=需要19分钟
我做了什么
占整个工作时间的60%以上
我在foreachPartition中创建SNS / SQS连接以改善连接。我们有更好的方式
我无法在驱动程序上创建连接对象,因为它们不可序列化
我没有使用执行程序9的数量,执行核心15,驱动程序内存2g,执行程序内存5g
我正在使用16核64 gig内存 簇大小1主9从属所有相同的配置 EMR部署火花1.6
答案 0 :(得分:1)
听起来你想要为每个节点设置一个SNS / SQS连接,然后用它来处理每个节点上的所有数据。
我认为foreachPartition在这里是正确的想法,但您可能希望事先合并您的RDD。这将折叠同一节点上的分区而不进行混洗,并允许您避免启动额外的SNS / SQS连接。