MLlib implements power iteration clustering. We can add a wrapper in GraphFrames. For example, g.powerIterationClustering.k(10).maxIter(5).run() returns a vertex DataFrame with cluster assignments. Note that we fixed a bug in PIC recently. So we might need to copy the implementation from Spark master before the next Spark release, as we did for PageRank.