Yes I have.
I have a case where we use graphframes (using BFS). Works fine, as long as you use the graph algorithms that are delivered with graphframes. And that can be quite limiting.
We also have a case where we started with graphframes but decided to go with repetead joins (not recursive joins but a join on a join on a join etc up to x levels). Works too of course but ugly as hell. To be refactored to something better 🙂
And then we have a beast in graphx where we had to apply a greedy graph algorithm.
This couldn't be done in graphframes so graphx to the rescue.
I do not recommend it though. It does what it has to do, but unless you use it very frequently, the code is very hard to interpret and not userfriendly at all.
So, graphs in spark can be done but frankly, I would try to use plain python or something like that if possible.
There once was an anouncement of cypher (neo4j) coming to spark but that kinda disappeared.