我在oracle db中有一个软件包pkg_multi_parm_price_agg
,该软件包具有功能
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功能调用数据库函数的。因此,我认为这是一个不同的问题,否则请更正我的理解。
答案 0 :(得分:0)
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()
用查询替换select query
。它将为您提供数据框。