Spark-SQL连接Hive的五种方法

一、内嵌的Hive

若使用Spark内嵌的Hive,直接使用即可,什么都不需要做(在实际生产活动中,很少会使用这一模式)

二、外部的Hive

步骤:

  1. 将Hive中conf/下的hive-site.xml拷贝到Spark的conf/目录下;
    Spark-SQL连接Hive的五种方法_第1张图片
  2. 把Mysql的驱动copy到jars/目录下;
    Spark-SQL连接Hive的五种方法_第2张图片
  3. 如果访问不到hdfs,则将core-site.xml和hdfs-site.xml拷贝到conf/目录下;
    Spark-SQL连接Hive的五种方法_第3张图片
  4. 重启spark-shell;
    Spark-SQL连接Hive的五种方法_第4张图片
    可以查看到数据库及表,则表明spark-shell连接到外部已部署好的Hive。

三、运行Spark beeline

步骤:

  1. 将Hive中conf/下的hive-site.xml拷贝到Spark-local模式下的conf/目录下;
cp /opt/software/hive-2.3.3/conf/hive-site.xml /opt/software/spark-local/conf/

  1. 把Mysql的驱动copy到jars/目录下;
cp /opt/software/hive-2.3.3/lib/mysql-connector-java-5.1.49.jar /opt/software/spark-local/jars/

  1. 如果访问不到hdfs,则将core-site.xml和hdfs-site.xml拷贝到conf/目录下;
cp /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/hdfs-site.xml /opt/software/spark-local/conf/

cp /opt/software/hadoop/hadoop-2.9.2/etc/hadoop/core-site.xml /opt/software/spark-local/conf/

Spark-SQL连接Hive的五种方法_第5张图片

4.启动Thrift Server

sbin/start-thriftserver.sh 

Spark-SQL连接Hive的五种方法_第6张图片

  1. 使用beeline连接Thrift Server
cd bin/
beeline -u jdbc:hive2://node01:10000 -n root

Spark-SQL连接Hive的五种方法_第7张图片

四、运行Spark-SQL CLI

步骤:

  1. 把Mysql的驱动copy到jars/目录下;
  2. 将Hive中conf/下的hive-site.xml拷贝到Spark-local模式下的conf/目录下;
    (以上步骤同方法二)
  3. 运行bin/目录下的spark-sql.cmd或打开cmd在D:\spark-3.0.0\spark-3.0.0-bin-hadoop3.2\bin中直接运行spark-sql。
    Spark-SQL连接Hive的五种方法_第8张图片

五、代码操作Hive

步骤:

  1. 导入依赖。
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-hive_2.12</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-exec</artifactId>
    <version>2.3.3</version>
</dependency>
  1. 将hive-site.xml 文件拷贝到项目的 resources 目录中。
    Spark-SQL连接Hive的五种方法_第9张图片

  2. 代码实现。

val sparkConf = new SparkConf().setMaster("local[*]").setAppName("hive")
val spark:SparkSession = SparkSession.builder()
  .enableHiveSupport()
  .config(sparkConf)
  .getOrCreate()

spark.sql("show databases").show()
spark.sql("create database spark_sql")
spark.sql("show databases").show()

Spark-SQL连接Hive的五种方法_第10张图片
Spark-SQL连接Hive的五种方法_第11张图片

注意:

  • 如果在执行操作时,出现如下错误:
    可以在代码最前面增加如下代码解决:
System.setProperty("HADOOP_USER_NAME", "node01")

此处的 node01 改为自己的 hadoop 用户名称

  • 在开发工具中创建数据库默认是在本地仓库,通过参数修改数据库仓库的地址:
 config("spark.sql.warehouse.dir", "hdfs://node01:9000/user/hive/warehouse")

以上就是Spark-SQL连接Hive的五种方法。

你可能感兴趣的:(hive,spark)