一个 Spark 工作线程中的数据库查询

Database Queries in One Spark Worker Thread

最近开始学习Spark来加速处理。在我的情况下,Spark 应用程序的输入 RDD 不包含批处理所需的所有数据。因此,我必须在每个工作线程中执行一些 SQL 查询。

可以对所有输入数据进行预处理,但时间太长。

我知道下面的问题可能太"general",但任何经验都会有所帮助。

  1. 是否可以在工作线程中执行一些 SQL 查询?
  2. 如果单个查询比较复杂,数据服务器上的调度会不会是瓶颈?
  3. 哪个数据库适合这种情况(也许具有良好的并发能力)? MongoDB? *SQL?

如果没有具体的 use-case,很难回答您的一些问题。但以下通用答案可能会有所帮助

  1. 是的。您可以访问外部数据源(RDBMS、Mongo 等)。您甚至可以使用 mapPartitions 通过创建一次连接来提高性能。看到 example here
  2. 不看具体例子就无法回答
  3. 数据库选择取决于 use-cases。