如何依次运行火花作业?

时间:2018-10-23 13:07:56

标签: apache-spark pyspark apache-spark-sql

我有一个用例,其中有一个表,其中的一列包含SQL查询序列。

我想在spark程序中一个接一个地运行这些SQL查询,而不是并行运行。这是因为第N行的SQL查询将依赖于第(N-1)行。

现在由于这个限制,我想一个接一个地顺序执行而不是并行执行。我该如何实现?

1 个答案:

答案 0 :(得分:0)

我认为您可以使用类似这样的东西:

val listOfQueryRows = spark.sqlContext.table("foo_db.table_of_queries")
  .select(col("sql_query"))
  .orderBy(col("query_index"))
  .collectAsList()

listOfQueryRows.forEach(queryRow => spark.sql(queryRow.getString(0)))

这将在sql_query列中选择所有查询,并按query_index中给出的索引对其进行排序,并将其收集在驱动程序的列表listOfQueryRows中。然后依次遍历该列表,以针对每个返回的行顺序执行查询。