java - 如何使用apache Spark调用包内的db函数

标签 java apache-spark apache-spark-sql

我有一个包裹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/

相关文章:

Spark 中的 Java 8 流开销

hadoop - 使用 spark sql 加载到配置单元后无法看到 hdfs 文件

sql - Spark SQL 中的日期和间隔加法

java - 带 spring-test 的 Spring Jar 版本

scala - 在 Windows 7 上运行 spark-submit 后无法删除临时文件

java - 对象数组的深拷贝

hadoop - Apache Spark 在作业开始之前正在做什么

python - PySpark 数据框中的日期差异

java - SVN通知 : Do not send notification email when a special keyword is present in the svn log message

java - java中的序列化,在事件中重新膨胀对象?