當前位置:編程學習大全網 - 源碼下載 - 如何理解spark中RDD和DataFrame的結構

如何理解spark中RDD和DataFrame的結構

妳對RDD的理解是對的,RDD就是壹個分布式的無序的列表。

RDD中可以存儲任何的單機類型的數據,但是,直接使用RDD在字段需求明顯時,存在算子難以復用的缺點。

例如,現在RDD存的數據是壹個Person類型的數據,現在要求所有每個年齡段(10年壹個年齡段)的人中最高的身高與最大的體重。

使用RDD接口,因為RDD不了解其中存儲的數據的具體結構,數據的結構對它而言是黑盒,於是這就需要用戶自己去寫壹個很特化的聚合的函數來完成這樣的功能。

而有了DataFrame,則框架會去了解RDD中的數據是什麽樣的結構的,用戶可以說清楚自己對每壹列進行什麽樣的操作,這樣就有可能可以實現壹個算子,用在多個列上,比較容易進行算子的復用。甚至,未來又要同時求出每個年齡段內不同的姓氏有多少個,則使用RDD接口,之前的函數需要改動很大才能滿足需求,而使用DataFrame接口,則只需要添加對這壹個列的處理,原來的max/min的相關列處理都可保持不變。

總而言之,DataFrame相關接口就是RDD的壹個擴展,讓RDD了解了RDD中存儲的數據包含哪些列,並可以在列上進行操作。

另外,DataFrame基本上快要被Dataset接口取代了,妳可以再去了解下Dataset接口。

最後,打個廣告:如果是百度內部的同學看到我的答案,有類似需求時,歡迎使用我們的Bigflow項目,API設計得比Spark更簡單易用,且用戶代碼可復用性更強。我們的Schema相關接口在代碼可復用程度上要遠超DataFrame/Dataset——廠外同學聽我在這兒“吹”不信就罷了,直接忽略即可,咱們也不用爭辯,短期內暫無法給妳證明。

  • 上一篇:許毅源的角色點評
  • 下一篇:4399新仙劍奇俠傳2攻略
  • copyright 2024編程學習大全網