Carpooling taxicab services hold the promise of providing additional transportation supply, especially in extreme weather or rush hour when regular taxicab services are insufficient. Although many recommendation systems about regular taxicab services have been proposed recently, little research, if any, has been done to assist passengers to find a successful taxicab ride with carpooling. In this paper, we present the first systematic work to design a unified recommendation system for both regular and carpooling services, called CallCab, based on a data driven approach. In response to a passenger's request, CallCab aims to recommend either (i) a vacant taxicab for a regular service with no detour, or (ii) an occupied taxicab heading to the similar direction for a carpooling service with less detour, yet without assuming any knowledge of destinations of passengers already on occupied taxicabs. To analyze these unknown destinations of occupied taxicabs, CallCab generates and refines taxicab trip distributions based on GPS datasets and context information collected in the existing taxicab infrastructure. To improve CallCab's efficiency to process such a big dataset, we augment the efficient MapReduce model with a Measure phase tailored for our application. We evaluate CallCab with a real world dataset of 14,000 taxicabs, and results show that compared to ground truth, CallCab can reduce 64% of the total mileage to deliver all passengers and 63% of passenger's waiting time.