并行运行 SparkSQL 阶段作业
Posted
技术标签:
【中文标题】并行运行 SparkSQL 阶段作业【英文标题】:Run SparkSQL stage jobs in parallel 【发布时间】:2016-10-06 14:24:25 【问题描述】:我正在加载一个文本文件:
val adReqRDD = sc.textFile("/Users/itru/Desktop/vastrack_sample_old.rtf")
我将数据存储为临时表
adReqRDD.registerTempTable("adreqdata")
我需要查询上表
val alladreq = sqlContext.sql("select DeviceId,count(EventType) as AllAdreqCount from adreqdata where EventType = 1 and Network = 0 group by DeviceId ")
val adreqPerDeviceid = sqlContext.sql("select DeviceId,count(EventType) as AdreqCount from adreqdata where EventType = 1 and Network = 0 and PlacementId <> '-' and BundleID <> '-' and DeviceId <> '-' and IPAddress <> '-' group by DeviceId ")
val adreqPerDeviceidtoSpotx = sqlContext.sql("select DeviceId,count(EventType) as AdreqCountToSpotx from adreqdata where EventType = 1 and Network = 9 and PlacementId <> '-' and BundleID <> '-' and DeviceId <> '-' and IPAddress <> '-' group by DeviceId ")
一旦我的工作开始,所有 3 个活动阶段都按顺序运行,我怎样才能让它们并行运行。
【问题讨论】:
【参考方案1】:您可以使用期货来并行启动火花动作。像这样的东西。
val queries = Seq(
"query1",
"query2",
"query3"
)
val results = Future.traverse(queries)(q => Future(
val queryResult = sqlContext.sql(q)
queryResult.write.format...
))
Await.result(result, Duration.Inf)
【讨论】:
在此之后如何将每个查询结果写入文件 添加了一个编辑。查看有关如何写入文件的 spark 文档。 spark.apache.org/docs/latest/…以上是关于并行运行 SparkSQL 阶段作业的主要内容,如果未能解决你的问题,请参考以下文章