迭代Spark中的ResultSet

时间:2017-11-30 23:49:52

标签: apache-spark apache-spark-sql

当我使用jdbc对SQL数据库执行查询时,我获得了一个ResultSet对象。假设我想遍历ResultSet中返回的每一行,然后对每一行进行操作,我的问题是驱动程序或执行程序是否会处理初始迭代ResultSet?

例如,假设我有一个服务,我希望大批量处理许多WordCount作业。也许我有一个带有以下架构的数据库:

JobId: int
Input: string(hdfs location)
Output: string (hdfs path)
Status: (not started, in progress, complete, etc.)

每次我的Spark应用程序运行时,我都想使用jdbc从DB读取并获取状态为“未启动”的每一行。这将作为ResultSet返回,每个结果基本上都是Spark运行WordCount的参数。当我迭代ResultSet时,它是否被拆分并且执行程序迭代小块?或者驱动程序是否处理迭代?如果是前者,一旦我开始为给定的输入位置加载DataFrames并运行必要的转换和动作以获得字数,会发生什么?执行者会进一步将DataFrames拆分为其他执行者进行处理吗?

很抱歉,如果这个问题不清楚,我仍然在学习Spark并且无法解决其中一些问题。同样,这通常被认为是在一个大批量处理多个请求的好方法吗?或者有更好的方法来做这件事吗?

谢谢!

0 个答案:

没有答案