Spark:在每个执行程序上处理rdd之前调用自定义方法
Spark : Call a custom method before processing rdd on each executor
我正在开发一个 spark Streaming 应用程序。我有一个要求,我需要验证某些条件(通过读取本地 FS 中存在的文件)。
我尝试这样做:
lines.foreachRDD{rdd =>
verifyCondition
rdd.map() ..
}
def verifyCondition(){
...
}
但 verifyCondition 仅由 Driver 执行。有什么方法可以让每个执行者执行它吗?
谢谢
lines.foreachRDD { rdd =>
rdd.foreachPartition => partition
verifyCondition(...) // This will be executed by executors, once per every partition
partition.map(...)
}
}
您可以像
一样在 rdd.map() 中移动 verifyCondition 函数
rdd.map{
verifyCondition
...
}
因为map里面是一个闭包(闭包是一个记录,把一个函数和一个环境一起存储起来),spark会把它分发给executor,由每个executor执行。
我正在开发一个 spark Streaming 应用程序。我有一个要求,我需要验证某些条件(通过读取本地 FS 中存在的文件)。 我尝试这样做:
lines.foreachRDD{rdd =>
verifyCondition
rdd.map() ..
}
def verifyCondition(){
...
}
但 verifyCondition 仅由 Driver 执行。有什么方法可以让每个执行者执行它吗?
谢谢
lines.foreachRDD { rdd =>
rdd.foreachPartition => partition
verifyCondition(...) // This will be executed by executors, once per every partition
partition.map(...)
}
}
您可以像
一样在 rdd.map() 中移动 verifyCondition 函数rdd.map{
verifyCondition
...
}
因为map里面是一个闭包(闭包是一个记录,把一个函数和一个环境一起存储起来),spark会把它分发给executor,由每个executor执行。