【问题标题】:Convert Oracle stored procedure to Hive or Spark将 Oracle 存储过程转换为 Hive 或 Spark
【发布时间】:2018-03-25 22:46:27
【问题描述】:
我在 Oracle 中编写了存储过程。有什么方法可以在 Hive 或 Spark 中实现该存储过程的相同功能。
就像在 Oracle 存储过程中一样,我们有游标,我们可以在另一个过程中调用一个过程,也可以进行很多其他操作。
请建议这在 Hive 中是否可行,或者是否有其他方式。我在网上搜索,似乎 Hive 版本 2 提供了使用存储过程的选项。
但是旧版本的解决方案是什么?
我是 Hive 和 Spark 的新手,因此欢迎任何指导或建议。
提前致谢。
【问题讨论】:
标签:
scala
apache-spark
stored-procedures
hive
user-defined-functions
【解决方案1】:
您还可以使用普通的java.sql.Connection、CallableStatement 等从 Spark 调用您的存储过程。
例如
protected ResultSet fetchDataFromJdbc(String storedProc) {
Connection connection;
CallableStatement statement;
try {
Class.forName("my.db.Driver");
connection = DriverManager.getConnection("url","user","pass");
statement = connection.prepareCall(storedProc);
statement.registerOutParameter(1, "outValue");
statement.executeQuery();
return (ResultSet) statement.getObject(1);
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
}
throw new IllegalStateException("Results should have returned.");
}