我是Spark新手,现在我正在玩SparkR运行一些ML算法。我常常对本地R数据帧和SparkR数据帧感到困惑。本地R数据帧和SparkR数据帧之间的区别是什么?它们之间的关系是什么?他们与RDD之间的关系是什么?
先谢谢。
答案 0 :(得分:1)
RDD与数据帧的行为不同。 RDD存在于管道中,每个RDD都是前一个的迭代,每次向其应用函数时。每次迭代都不会单独存储在内存中,只是作为最后一次迭代存在,RDD只知道使其到达的位置的函数。简而言之,您必须采用lambda函数等函数方法,而for循环等操作不适用于RDD。通过以这种方式存储数据,它使Spark比更老式的map-reduce软件包更快。
与本地帧相比,SparkR数据帧还具有不同的可用功能。我假设(因为这是pyspark数据帧和本地pandas数据帧的情况),用于追加新列并将新数据帧保存到磁盘的函数不同。例如,使用pyspark数据帧,您可以使用withColumn()函数来添加列而不是更传统的python。因此,一般来说,您在本地框架上经典使用的某些函数将无法在SparkR帧上运行,因为SparkR帧主要限于spark库。