我有一个用例,其中有一个表,其中的一列包含SQL查询序列。
我想在spark程序中一个接一个地运行这些SQL查询,而不是并行运行。这是因为第N行的SQL查询将依赖于第(N-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
中。然后依次遍历该列表,以针对每个返回的行顺序执行查询。