2017-03-01 70 views
1

我目前正在自学Spark编程,并尝试在PySpark中重新编写现有的Python应用程序。不过,我仍然对PySpark中如何使用常规Python对象感到困惑。在使用PySpark时如何在Spark中实现Python数据结构?

我理解Spark中的分布式数据结构,如RDD,DataFrame,Datasets,vector等.Spark具有自己的转换操作和动作操作,如.map(),.reduceByKey()来操作这些对象。但是,如果我在PySpark中创建传统Python数据对象(如数组,列表,元组或字典)会怎么样?它们将只存储在我的驱动程序节点的内存中,对吗?如果我将它们转换为RDD,我仍然可以使用典型的Python函数执行操作吗?

如果我有一个庞大的数据集,我可以使用常规的Python库(如pandas或numpy)来在PySpark中处理它吗?如果我直接在PySpark中的Python对象上执行Python函数,Spark会仅使用驱动程序节点来运行数据吗?或者我必须在RDD中创建它并使用Spark的操作?

回答

0

您可以在PySpark中创建传统Python数据对象,如数组,列表,元组或字典。

您可以在Pyspark中使用python函数执行大部分操作。

可以导入Python库中Pyspark,并利用它们在Pyspark

来处理数据,您可以创建一个RDD并把它们应用火花操作

+0

感谢澄清!所以,我可以在PySpark中自由创建Python数据对象,但它们不是正确分配的?如果我创建了一个巨大的Python字典,它将只存储在运行驱动程序的节点的内存中。在PySpark中分发数据的唯一方法是将其转换为像RDD这样的Spark数据对象,对吗?这意味着我可以创建Python数据对象并执行操作,但只能分发RDD对象上的Spark操作? –

相关问题