Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 收集数据帧后比较SparkMlib和Scikit学习_Apache Spark_Apache Spark Mllib - Fatal编程技术网

Apache spark 收集数据帧后比较SparkMlib和Scikit学习

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级的信息,这些数据量将是如此巨大,以至于一台计算机无法容纳

我对SparkMlib的使用感到困惑,因为在大多数情况下,数据结构仍然是“局部”密集/稀疏向量/矩阵。收集RDD并将其转换为局部向量/矩阵向量和应用SparkMLib与将RDD收集到numpy向量并应用Sckit学习之间的区别是什么?SparkMlib如何获得比Sckit learn更好的性能?

如果您的数据足够小,可以放入驱动程序的内存中,那么使用
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?