Skip to content

Instantly share code, notes, and snippets.

@oeegee
Forked from samklr/DotProduct.scala
Created January 31, 2018 15:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oeegee/38d0caae8903976c8e8972f2d2bd3125 to your computer and use it in GitHub Desktop.
Save oeegee/38d0caae8903976c8e8972f2d2bd3125 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