我正在本地执行火花流作业,一批大约需要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()
答案 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个)