Spark, Distributed Systems, Machine Learning, Hadoop, Scalability.
Custom Implementation An algorithm can be made parallel only when it can be divided into independent sub-tasks. To explicate, Bitonic sorting can be made parallel as the sequence of operations are data-independant, while merge sort is not. Similarly, some ML algorithms are trivially parallelizable