【发布时间】:2021-03-07 05:11:15
【问题描述】:
我正在从我的 spark 代码中读取 Oracle 数据库并将其持久化 -(缓存操作)。
val dataOracle = spark.read
.format("jdbc")
.option("url",conn_url)
.option("dbtable", s"(select * from table)")
.option("user", oracle_user)
.option("password", oracle_pass)
.option("driver",oracle_driver)
.load().persist()
代码结束,我需要取消持久化这个数据框,因为它可能会在数据库中发生一些变化,我需要在下一个周期中使用这些数据,但同时成本对我来说非常重要。如果我缓存数据帧,我的代码将在 1 秒以下,如果我不超过 3 秒(这是不可接受的)。有没有什么策略可以从数据库中获取最新数据,同时也最小化时间成本!
我的主要操作是使用Oracle数据:
dataOracle.createOrReplaceTempView("TABLE")
val total = spark.sql(s"select count(*) from TABLE where name = ${name}").first().getLong(0)
val items = spark.sql(s"SELECT count(*) from TABLE where index = ${id} and name = ${name}").first().getLong(0)
val first_rule: Double = total.toDouble / items.toDouble
【问题讨论】:
标签: java database scala apache-spark caching