【问题标题】:How to apply multiple methods at a time in Spark?如何在 Spark 中一次应用多个方法?
【发布时间】:2016-01-05 15:21:39
【问题描述】:

df 是一个包含所有汽车数据的数据框(| id | time | speed | gps |...|);

trips 是一个序列列表 contains(id,start,end),它从 df 生成。

method1 用于获取每个 id 的统计信息。 method2用于获取每个id的其他stats信息。

喜欢这段代码:

val a = method1(trips,df,sc)
val b = method2(trips,df,sc)
val c = method3(trips,df,sc)
val d = method4(trips,df,sc)
val e = method5(trips,df,sc)
val f = method6(trips,df,sc)

因为每个方法都需要一定的时间,有没有办法同时应用这些方法进行赋值? a,b...,f的类型是dataframe。

【问题讨论】:

  • 类型签名一样吗?
  • 是的,类型签名是一样的
  • @zero323 spark 无论如何都会并行运行操作,因为调用是惰性的 - 除非你在某个地方收集。
  • @zero323 确实,每个方法都要做一系列工作(数据帧过滤,在dataframe.collect()之后选择和计算)
  • @steven 不能没有收集?

标签: scala apache-spark


【解决方案1】:

是的,您可以借助 collectAsync()、countAsync() 等异步操作在 Spark 集群中同时运行多个作业。

 yo just set configuration with context .set("spark.scheduler.mode", "FAIR") 

并使用异步操作,因此所有作业都异步运行并返回未来,因此您的方法也返回未来,因此所有方法一次运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-19
    • 2014-09-04
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    相关资源
    最近更新 更多