我的Spark sql查询或数据框在哪里执行?

时间:2018-06-21 03:43:46

标签: mysql apache-spark jdbc apache-spark-sql

我有以下代码,它将从mysql数据库中读取表:

val jdbcDF = sparkSession.read
  .format("jdbc")
  .option("url", "idbc:mysql location")
  .option("dbtable", "tablename")
  .option("user", "root")
  .option("password", "root")
  .load().where(some condition)

我的问题:

  1. 加载时,我正在根据特定条件过滤记录。那么条件查询将在mysql服务器上执行并返回结果吗?
  2. 如果我只是从任何数据库加载表。我的表记录将如何分配到整个集群中,谁负责?

1 个答案:

答案 0 :(得分:0)

  1. 除非您执行一些操作,否则即使过滤条件也不会执行任何操作,也不会将数据复制到内存中。懒惰的评价。

  2. 一旦执行动作,您编写的代码将被存入内存,然后应用过滤器。如果要在MySQL中执行过滤器,请在dbtable选项中传递查询而不是表名。