Spark Streaming Job运行非常缓慢

时间:2019-04-17 07:05:51

标签: apache-spark pyspark spark-streaming

enter image description here enter image description here我正在本地执行火花流作业,一批大约需要4到5分钟。有人可以建议波纹管代码有什么问题吗?

ggplot(my.dend,labels=F,horiz=T)+guides(fill=F)+coord_flip()+annotate("text",size=4.5,hjust=0,x=my.dend$label$x,y=my.dend$label$y,label=my.dend$label$label)+labs(x="",y="")+theme_minimal()+
  theme(axis.text=element_blank(),axis.ticks=element_blank(),panel.grid=element_blank(),legend.position="none",legend.text=element_blank(),legend.background=element_blank(),legend.key=element_blank())+
  geom_scatterpie(aes(x=x,y=y+0.05),data=labels.df,color=NA,cols=as.character(1:3))+coord_equal()

1 个答案:

答案 0 :(得分:1)

使用小批量流技术时,您通常要减少输出分区的数量...因为每次持久化时您都在进行一些聚合(广泛的转换),由于以下原因,它将默认为磁盘上的200个分区

spark.conf.get("spark.sql.shuffle.partitions")

尝试将此配置降低到较小的输出分区,并将其放置在代码的开头,以便在执行聚合时将5个分区输出到磁盘

spark.conf.set("spark.sql.shuffle.partitions", 5)

您还可以通过查看输出写入流目录中的文件数以及确定聚合df中的分区数来了解一下

df3.rdd.getNumPartitions()

btw,因为您正在使用本地模式进行测试,请尝试将设置设置为local [8]而不是local [4],这样会增加cpu内核的并行度(我假设您有4个)