1. A computer-executable method for recommending a product to a consumer, comprising: copying, by one or more processors to a memory of one or more computing devices, data representing source vertices, destination vertices, and edges of a graph, wherein a respective edge pointing from a source vertex representing a respective consumer to a destination vertex representing a respective product indicates that the respective consumer consumes the respective product; partitioning the graph edges based on destination vertices to generate a plurality of successor-partitioned graphs; partitioning the graph edges based on source vertices to generate a plurality of predecessor-partitioned graphs; determining, by a plurality of processors operating in parallel, one or more products that the consumer consumes, which includes traversing, by a respective processor, a successor-partitioned graph from a source vertex representing the consumer to one or more destination vertices, wherein a respective destination vertex represents a product the consumer consumes; determining, by the plurality of processors operating in parallel, one or more other consumers that consumes at least one product that the consumer also consumes, which includes traversing, by a respective processor, a predecessor-partitioned graph from a respective destination vertex to a respective source vertex, wherein a respective source vertex represents another consumer that consumes a product that the consumer also consumes; determining one or more other products that the one or more other consumers consume; and providing a recommendation to the consumer to consume one of the one or more other products.