Scala 火花重新分配到特定资源
给定一个混合了多种机器类型(例如,带和不带GPU)的火花盘组。我想运行一个Spark管道,其中有些阶段在没有GPU的机器上运行,有些阶段在有GPU的机器上运行 我愿意使用任何集群管理器(纱线、Kubernetes、Mesos等)Scala 火花重新分配到特定资源,scala,apache-spark,Scala,Apache Spark,给定一个混合了多种机器类型(例如,带和不带GPU)的火花盘组。我想运行一个Spark管道,其中有些阶段在没有GPU的机器上运行,有些阶段在有GPU的机器上运行 我愿意使用任何集群管理器(纱线、Kubernetes、Mesos等) import org.apache.spark.sql.functions.udf val cpu_only=udf((v:String)=>v) val gpu_only=udf((v:String)=>v) val数据集=Seq((0,“你好”),(1,“世界”).
import org.apache.spark.sql.functions.udf
val cpu_only=udf((v:String)=>v)
val gpu_only=udf((v:String)=>v)
val数据集=Seq((0,“你好”),(1,“世界”).toDF(“id”,“text”)
数据集
.withColumn(“从cpu”,仅cpu(“文本))
.withColumn(“from_gpu”,仅限gpu(“from_cpu))
显示
/*概念上需要“重新分区到资源池”(不存在)
数据集
.repartitionToResourcePool(“仅限CPU”)
.withColumn(“从cpu”,仅cpu(“文本))
.repartitionToResourcePool(“仅限GPU”)
.withColumn(“from_gpu”,仅限gpu(“from_cpu))
显示
*/
在上述情况下,仅cpu_的UDF代码应该只在没有GPU的机器上执行,而仅GPU应该只在有GPU的机器上执行
关于如何实现这个场景,有什么建议吗?我只需要进行一点定制就可以做到这一点 两个基本变化
import org.apache.spark.sql.functions.udf
val cpu_only = udf((v: String) => v)
val gpu_only = udf((v: String) => v)
val dataset = Seq((0, "hello"), (1, "world")).toDF("id", "text")
import example.extend_spark_api._ // NEW
val cpu = sc.getWorkersFromTag("CPU") // NEW
val gpu = sc.getWorkersFromTag("GPU") // NEW
dataset
.repartitionTo(cpu) // NEW
.withColumn("from_cpu", cpu_only('text))
.repartitionTo(gpu) // NEW
.withColumn("from_gpu", gpu_only('from_cpu))
.show
我能够做到这一点,只是有点定制火花 两个基本变化
import org.apache.spark.sql.functions.udf
val cpu_only = udf((v: String) => v)
val gpu_only = udf((v: String) => v)
val dataset = Seq((0, "hello"), (1, "world")).toDF("id", "text")
import example.extend_spark_api._ // NEW
val cpu = sc.getWorkersFromTag("CPU") // NEW
val gpu = sc.getWorkersFromTag("GPU") // NEW
dataset
.repartitionTo(cpu) // NEW
.withColumn("from_cpu", cpu_only('text))
.repartitionTo(gpu) // NEW
.withColumn("from_gpu", gpu_only('from_cpu))
.show
你看过IBM吗?谢谢你!这是一个非常好的链接,接近我正在寻找的内容。我希望有一些开源(或DIY)的东西,可能比gpu和无gpu更通用。你看过IBM吗?谢谢!这是一个非常好的链接,接近我正在寻找的内容。我希望有一些开源(或DIY)的东西,可能比gpu和无gpu更通用