Spark连接Hive,进行Hive数据表的读写操作

2022年12月31日13:26:50

基础环境

  1. Hadoop安装-1hadoop安装-2
  2. spark安装
  3. Hive安装

配置

  1. 将Hive的conf目录下的hive-site-xml文件拷贝到spark的conf目录下;
  2. 将Hive中的mysql驱动包(mysql-connector-java-8.0.22.jar,根据自己mysql的版本进行选择)也拷贝到spark的jars目录下;

spark-shell

当完成了上面的步骤之后,在spaek-shell中,就可以访问hive了。

import org.apache.spark.sql.SparkSession


val warehouseLocation = "spark-warehouse"

val spark = SparkSession
  .builder()
  .appName("Spark Hive Example")
  .config("spark.sql.warehouse.dir", warehouseLocation)
  .enableHiveSupport()
  .getOrCreate()

import spark.implicits._
import spark.sql

// 到这里,你就可以随意读取Hive了
// test是hive中的表名
df = sql("select * from test") // 返回spaek的DataFrame
df.show() 

// 这里可以用sql语句,对Hive中的数据表进行任何的读写操作
sql(".....")

当然,这是在集群中的任意一个节点服务器中执行。
因此,你也可以使用spark-submit的方式。

最后,spark访问hive为什么这么简单呢?基本不需要什么复杂的配置?
这是因为hive的元数据实际还是存放在hdfs,所以,你的hadoop和spark集群配置才是关键工作,spark访问的根头还是hdfs。

错误规避

一、 Unable to instantiate SparkSession with Hive support because Hive classes are not found:

这个就是需要把spark-hive相关的包加到项目中。

坑人的是maven仓库官网中对spark-hive的引用是这样:

libraryDependencies += “org.apache.spark” %% “spark-hive” % “2.4.4” % “provided”
但是实际上,应该写成libraryDependencies += “org.apache.spark” %% “spark-hive” % “2.4.4”

二、Hive Schema version xxx does not match metastore’s schema version xxx Metastore is not upgraded or corrupt

解决方案:

1.登陆mysql,修改hive metastore版本:
进入mysql:mysql -uroot -p (123456)

use hive;
select * from version;
update VERSION set SCHEMA_VERSION='2.1.1' where  VER_ID=1;

2.简单粗暴:在hvie-site.xml中关闭版本验证

<property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
</property>

三、Attempt to invoke the “HikariCP” plugin to create a ConnectionPool gave an error : The connection pool plugin of type “HikariCP” was not found in the CLASSPATH!

修改hive的数据库连接方式:

<property>
  <name>datanucleus.connectionPoolingType</name>
  <value>dbcp</value>
  <description>
  	Expects one of [bonecp, dbcp, hikaricp, none].
  	Specify connection pool library for datanucleus
  </description>
</property>

  • 作者:我就算饿死也不做程序员
  • 原文链接:https://blog.csdn.net/sgyuanshi/article/details/114108059
    更新时间:2022年12月31日13:26:50 ,共 1740 字。