1. Yes. RDD use lazy loading/evaluation. That means that an RDD is only loaded to memory if an action is performed on it. If you have 10 RDDs with actions performed on them they will all be loaded in Spark memory.
2. No, Spark will remove data from memory if it is no longer used. However, if you want to force a removal/purge, you can use sqlContext.uncacheTable() or RDD.unpersist().
3. Spark will load what it can in memory. The rest will remain on disk. The downside to that is that for that data on disk, the RDD will have to be read and recalculated every time there is an action against them. So, computations/performance will only be slower due to that, but the jobs/actions would not fail.
As always, if you find this post helpful, don't forget to "accept" answer.