我有以下代码,它将从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)
我的问题:
加载时,我根据特定条件过滤记录。那么在mysql服务器上执行条件查询并返回结果的位置呢?
如果我只是从任何数据库加载表。我的表记录将如何分布在集群中,谁负责这样做?
1条答案
按热度按时间3bygqnnd1#
除非执行某些操作,否则spark不会执行任何操作,即使是过滤条件,也不会将数据复制到内存中。这是懒惰的评价。
一旦执行了操作,您编写的代码就会将数据拉入内存,然后应用过滤器。如果您想在mysql中执行filter,那么在dbtable选项中传递查询而不是表名。