This document discusses techniques for co-occurrence-based recommendations using Apache Mahout, Scala, and Spark. It describes how Mahout computes the co-occurrence matrix ATA using a row-outer product formulation that executes in a single pass over the row-partitioned matrix A. It also explains how the computation is optimized physically by using specialized operators like Transpose-Times-Self to avoid repartitioning the matrix. Finally, it provides examples of how the distributed computation of ATA is implemented across worker nodes.