Spark2 3 1 函式傳遞

2021-08-21 07:06:46 字數 566 閱讀 1151

spark api非常依賴於在驅動器程式傳遞函式到集群上執行,有兩種方式

1 匿名函式

2 全域性單例物件的靜態方法

1) 傳遞單例物件的函式

object myfunctions 

}myrdd.map(myfunctions.func1)

2) 在類的方法中有transformation/action操作,且閉包引用類變數,則例項化類物件並且呼叫該方法時會將整個例項物件傳遞給各個節點,這樣會消耗頻寬資源和儲存空間,為避免這種情況,可以將類變數賦值給區域性變數,讓閉包引用區域性變數,無需傳遞整個物件

class myclass 

def dostuff(rdd: rdd[string]): rdd[string] =

}

class myclass  //相當於this.field + x需要傳遞整個物件

}

def dostuff(rdd: rdd[string]): rdd[string] =

Spark2 3 1使用技巧

case class studentinfo id long,name string,age int val example spark.read.json data result.json as studentinfo example.show 在需要根據不同資料定義不同schema val sc...

Spark2 3 1中用各種模式來跑官方Demo

local模式也就是本地模式,也就是在本地機器上單機執行程式。使用這個模式的話,並不需要啟動hadoop集群,也不需要啟動spark集群,只要有一台機器上安裝了jdk scala spark即可執行。進入到spark2.1.1的安裝目錄,命令是 cd opt spark spark 2.1.1 bi...

將函式傳遞給Spark

object myfunctions myrdd.map myfunctions.func1 請注意,雖然也可以在類例項中傳遞對方法的引用 與單例物件相對 但這需要將包含該類的物件與方法一起傳送。例如,考慮 class myclass def dostuff rdd rdd string rdd s...