使用 sbt 将 Scala 与 Hive 数据库连接起来,使用 IntelliJ 进行依赖
Posted
技术标签:
【中文标题】使用 sbt 将 Scala 与 Hive 数据库连接起来,使用 IntelliJ 进行依赖【英文标题】:Connecting Scala with Hive Database using sbt for dependencies using IntelliJ 【发布时间】:2021-12-18 00:12:11 【问题描述】:我很难使用 Intellij 连接到 hive 数据库 或带有 scala 的基本命令行(对 java 也很满意)。我过去可以通过将 mysql 数据库添加到库 mysql-Connector 中来连接它。但我无法以某种方式将 jar 文件添加到它工作的项目结构中。
让事情变得更加困难。我已经安装了带有 hive、spark、hadoop 的 ubuntu,我正在通过网络连接到它。
有什么方法可以在 sbt 文件上添加依赖项吗?
最后,我知道有类似的问题,但它们没有详细说明如何从 scala 连接到 hive 数据库
`import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
object HiveJdbcClient extends App
val driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
Class.forName(driverName);
val con=DriverManager.getConnection("jdbc:hive://http://192.168.43.64:10000/default", "", "");
val stmt = con.createStatement();
val tableName = "testHiveDriverTable";
stmt.executeQuery("drop table " + "wti");
var res = stmt.executeQuery("create table " + tableName + " (key int, value string)");
// select * query
var sql = "select * from " + tableName;
res = stmt.executeQuery(sql);
while (res.next()) System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
// regular hive query
sql = "select count(1) from " + tableName;
res = stmt.executeQuery(sql);
while (res.next())
System.out.println(res.getString(1));
`
【问题讨论】:
您查看过 SBT 文档吗?添加库非常简单:libraryDependencies += "group" % "name" % "x.y.z"
libraryDependencies += "org.apache.hive" % "hive-jdbc" % "3.1.2" 它不工作。
查看项目结构,没有名为“org.apache.hive.jdbc.Hivedriver”的东西,有一个名为“org.apache.hive:hive-jdbc:3.1.2”的东西我只是将驱动程序名称更改为该名称或类似名称? @GaëlJ
请向我们展示build.sbt
文件或project/Dependencies.scala
或project/Build.scala
(如果您拥有其中之一,或者如果您拥有所有这些文件)。 (build.sbt 是强制性的)
【参考方案1】:
hive 3.1.2 的驱动名称不正确,应该是
org.apache.hive.jdbc.HiveDriver
参见https://hive.apache.org/javadocs/r3.1.2/api/org/apache/hive/jdbc/HiveDriver.html
【讨论】:
现在蜂箱将无法连接蜂箱。无法设置 sessionhivemetastoreclient 不要犹豫,打开另一个详细的问题 :-) 如您所见,魔鬼在细节中!以上是关于使用 sbt 将 Scala 与 Hive 数据库连接起来,使用 IntelliJ 进行依赖的主要内容,如果未能解决你的问题,请参考以下文章
SBT 与 Maven Central - 在工件 url 中摆脱 Scala 版本