2017-03-01 71 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操作? –

相關問題