Apache spark 收集数据帧后比较SparkMlib和Scikit学习
我对SparkMlib的使用感到困惑,因为在大多数情况下,数据结构仍然是“局部”密集/稀疏向量/矩阵。收集RDD并将其转换为局部向量/矩阵向量和应用SparkMLib与将RDD收集到numpy向量并应用Sckit学习之间的区别是什么?SparkMlib如何获得比Sckit learn更好的性能?如果您的数据足够小,可以放入驱动程序的内存中,那么使用Apache spark 收集数据帧后比较SparkMlib和Scikit学习,apache-spark,apache-spark-mllib,Apache Spark,Apache Spark Mllib,我对SparkMlib的使用感到困惑,因为在大多数情况下,数据结构仍然是“局部”密集/稀疏向量/矩阵。收集RDD并将其转换为局部向量/矩阵向量和应用SparkMLib与将RDD收集到numpy向量并应用Sckit学习之间的区别是什么?SparkMlib如何获得比Sckit learn更好的性能?如果您的数据足够小,可以放入驱动程序的内存中,那么使用Sckit learn或Apache Spark就没有太大区别了。但想象一下,你正在处理TB级的信息,这些数据量将是如此巨大,以至于一台计算机无法容纳
Sckit learn
或Apache Spark
就没有太大区别了。但想象一下,你正在处理TB级的信息,这些数据量将是如此巨大,以至于一台计算机无法容纳。那么,如何使用scikit-learn
在一台计算机上处理它呢?一种选择可能是使用一些采样,在计算机中采集尽可能多的记录,但这种采样可能有偏差,因此拥有海量数据
不是一个好的选择。这就是apachespark所解决的问题,它将数据分布在所有节点之间,并允许在其上进行分布式计算。此外,apachespark解释python并在JVM中运行它
另一个重要的区别是如何在apachespark
中实现所有算法。它们针对分布式计算进行了优化,这在其他框架中是不存在的。虽然我没有使用小数据集测试性能,但可能是由于这一特性,一些模型在apachespark
中的运行速度比在sciketlearn
中慢
顺便说一句,收集数据是一种非常糟糕的做法,最好在数据仍然是RDD或数据帧时预测或分类数据。谢谢!但是根据这里的文件[,似乎如果我不使用分布式矩阵,所有的处理仍将在本地进行。我可以说,如果我不使用分布式矩阵,一切都与sckit learn相似吗?SparkMlib的操作会更高效吗?断开链接。所有
RDD
s都是分布式的,其首字母缩写来自弹性分布式数据集。然而这里是Scikit learn
和Apache Spark
之间的一个重要区别,这就是所有这些代码都在JVM中运行。很抱歉,链接在这里。我可以理解所有RDD都是分布式的,但是如果我们想将RDD转换为本地矩阵,我们必须首先收集它,对吗?为什么需要获取列表?如果使用一个巨大的DS你的驱动程序会因为内存错误而崩溃。我理解。所以如果我有很大的数据,我只能做分布式矩阵来运行Spark Mlib?