我有一个包裹pkg_multi_parm_price_agg
在oracle db里面有一个函数
FUNCTION FN_GET_GROUP_ID_WRAPPER_F(PI_PARM_CODE_VAL_STR IN VARCHAR2,
PI_PARM_COUNT IN NUMBER)
RETURN TXN_DTL_PRITM.PRICEITEM_PARM_GRP_ID%TYPE;
当前使用 JDBC 准备好的语句,我可以使用以下查询并提供所需参数在我的 java 项目中成功调用它:
SELECT pkg_multi_parm_price_agg.fn_get_group_id_wrapper_F(?,?) FROM DUAL;
我想了解是否可以使用 Java 使用 Apache Spark 调用相同的方法?
编辑 - 这个问题是关于使用 Java 使用 apache Spark 功能调用数据库函数。因此,我认为它是不同的问题,如果不是,请纠正我的理解。
最佳答案
val sqlContext = SQLContext.getOrCreate(sc)
import sqlContext.implicits._
val jdbcHostname = "localhost"
val jdbcPort = 3306
val jdbcDatabase = "test"
val jdbcUsername = "root"
val jdbcPassword = "password"
val jdbcUrl = s"jdbc:mysql://${jdbcHostname}:${jdbcPort}/${jdbcDatabase}?user=${jdbcUsername}&password=${jdbcPassword}"
val query = """( select query ) foo"""
val df = sqlContext.read.format("jdbc")
.option("driver", "com.mysql.jdbc.Driver")
.option("url", jdbcUrl)
.option("useUnicode", "true")
.option("continueBatchOnError", "true")
.option("dbtable", query).option("user", jdbcUsername)
.option("password", jdbcPassword)
.load()
将选择查询
替换为您的查询。它会给你数据框。
关于java - 如何使用apache Spark调用包内的db函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839336/