Skip to content

Instantly share code, notes, and snippets.

@ee08b397
Forked from samklr/DotProduct.scala
Created April 28, 2016 19:53
Show Gist options
  • Save ee08b397/e7a315c77c081d5530f93adf6aaccd18 to your computer and use it in GitHub Desktop.
Save ee08b397/e7a315c77c081d5530f93adf6aaccd18 to your computer and use it in GitHub Desktop.
DotProduct matrix in scala and on spark
def dotProduct(vector: Array[Int], matrix: Array[Array[Int]]): Array[Int] = {
// ignore dimensionality checks for simplicity of example
(0 to (matrix(0).size - 1)).toArray.map( colIdx => {
val colVec: Array[Int] = matrix.map( rowVec => rowVec(colIdx) )
val elemWiseProd: Array[Int] = (vector zip colVec).map( entryTuple => entryTuple._1 * entryTuple._2 )
elemWiseProd.sum
} )
}
val A = sc.parallelize(Array(Array(7, 5, 4), Array(0, 3, 2), Array(8, 0, 5), Array(-11, 7, -4), Array(-8, 2, -13), Array(5, 0, -2)))
val B = sc.broadcast(Array(Array(100, -80, 75, -105, 30, -50), Array(60, -60, 60, -60, 60, -60), Array(-50, 30, -105, 75, -80, 100)))
A.map( row => dotProduct(row, B.value) ).collect
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment