Spark 和 ScalaNLP 库 Breeze 可以一起使用吗?

Can Spark and the ScalaNLP library Breeze be used together?

我正在 Apache Spark 中开发基于 Scala 的极限学习机。我的模型必须是 Spark Estimator 并使用 Spark 框架才能适应机器学习管道。有谁知道 Breeze 是否可以与 Spark 一起使用?我所有的数据都在 Spark 数据框中,可以想象我可以使用 Breeze 导入它,使用 Breeze DenseVectors 作为数据结构,然后转换为 Estimator 部分的 DataFrame。 Breeze 的优点是它有一个函数 pinv 用于 Moore-Penrose pseudo-inverse,它是非方阵的逆。据我所知,Spark MLlib 中没有等效函数。我不知道是否可以将 Breeze 张量转换为 Spark DataFrames,所以如果有人有这方面的经验,那将非常有用。谢谢!

  • Breeze 可以与 Spark 一起使用。实际上在内部用于许多 MLLib 函数,但所需的转换不会公开为 public。您可以添加自己的转化并使用 Breeze 处理单个记录。

    例如 Vectors 您可以找到转换代码:

    对于Matrices,请参阅Matrices.scala

  • 中的asBreeze / fromBreeze
  • 但是,它不能用于分布式数据结构。 Breeze 对象使用低级库,不能用于分布式处理。因此 DataFrame - 仅当您 collect 数据到驱动程序时才可能进行 Breeze 对象转换,并且仅限于数据可以存储在驱动程序内存中的场景。

  • 存在其他库,like SysteML,它们与 Spark 集成并提供更全面的分布式对象线性代数例程。