我有一个带有Spark
DataFrame的Scala
代码,其中包含几个帧、过滤器和动态部分。
是否可以生成并写入一个经典的SQL
代码来控制流程?
val target = List(
("0", "0", "Orange", "2020-03-10")
).toDF("id", "new_id", "name", "process_date")
....
dynamic part of code
....
increment.as("i")
.join(target.as("t"), $"t.id" === $"i.id", "left")
.select(selectFields: _*)
我想在日志中找到类似的东西
select field1, field2, ....
from increment i join target t where t.id = i.id
也许您可以在执行查询后立即在日志中进行写入。
类似于这个例子:
import org.apache.log4j.{Level, Logger}
Logger.getRootLogger.setLevel(Level.ERROR)
// your code here
increment.as("i")
.join(target.as("t"), $"t.id" === $"i.id", "left")
.select(selectFields: _*)
Logger.getRootLogger.error("""SELECT column1, column2, column3 FROM table JOIN table1 ON(id = id1) WHERE column3 = .....GROUP BY ....""")