使用 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.scalaproject/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 进行依赖的主要内容,如果未能解决你的问题,请参考以下文章

scala maven sbt 哪个

SBT 与 Maven Central - 在工件 url 中摆脱 Scala 版本

intellij 与 sbt scala 和 android dev

是否可以将黄油刀与 scala sbt 构建工具一起使用?

使用SBT构建Scala应用转载

使用 SBT 将编译后的 Scala 文件打包到 jar 中