Spark-SQL连接Hive的五种方法

这篇具有很好参考价值的文章主要介绍了Spark-SQL连接Hive的五种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、内嵌的Hive

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

二、外部的Hive

步骤:

  1. 将Hive中conf/下的hive-site.xml拷贝到Spark的conf/目录下;
    sparksession连接hive,hive,spark
  2. 把Mysql的驱动copy到jars/目录下;
    sparksession连接hive,hive,spark
  3. 如果访问不到hdfs,则将core-site.xml和hdfs-site.xml拷贝到conf/目录下;
    sparksession连接hive,hive,spark
  4. 重启spark-shell;
    sparksession连接hive,hive,spark
    可以查看到数据库及表,则表明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/

sparksession连接hive,hive,spark

4.启动Thrift Server

sbin/start-thriftserver.sh 

sparksession连接hive,hive,spark

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

sparksession连接hive,hive,spark

四、运行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。
    sparksession连接hive,hive,spark

五、代码操作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 目录中。
    sparksession连接hive,hive,spark

  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()

sparksession连接hive,hive,spark
sparksession连接hive,hive,spark

注意:

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

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

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

以上就是Spark-SQL连接Hive的五种方法。文章来源地址https://www.toymoban.com/news/detail-599569.html

到了这里,关于Spark-SQL连接Hive的五种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【大数据技术】Spark-SQL如何连接MySQL并进行读写数据

    1、配置连接MySQL的驱动 根据自己安装的MySQL的版本,找到正确的驱动文件,我的是MySQL8.0.19 所以驱动文件是mysql-connector-java-8.0.19.jar,将其复制到spark目录下的jars文件夹下 my@ubuntu:/usr/local/spark245_h_local/jars$ cp /home/my/myfolder/mysql-connector-java-8.0.19/mysql-connector-java-8.0.19.jar . 2、spark

    2024年02月08日
    浏览(32)
  • Java 连接合并两个数组(Array)的五种方法

    T可以是基础类型,也是类类型

    2024年02月05日
    浏览(48)
  • Hive基础知识(十):Hive导入数据的五种方式

    1)语法 (1)load data:表示加载数据 (2)local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表 (3)inpath:表示加载数据的路径 (4)overwrite:表示覆盖表中已有数据,否则表示追加 (5)into table:表示加载到哪张表 (6)student:表示具体的表 (7)partition:表示上传到

    2024年01月18日
    浏览(49)
  • spark-sql

    [root@localhost bin]# ./spark-sql Error: Failed to load class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver. Failed to load main class org.apache.spark.sql.hive.thriftserver.SparkSQLCLIDriver. You need to build Spark with -Phive and -Phive-thriftserver. 24/02/22 00:23:20 INFO ShutdownHookManager: Shutdown hook called 24/02/22 00:23:20 INFO Shutd

    2024年02月22日
    浏览(36)
  • Spark-SQL小结

    目录 一、RDD、DataFrame、DataSet的概念、区别联系、相互转换操作   1.RDD概念   2.DataFrame概念   3.DataSet概念   4.RDD、DataFrame、DataSet的区别联系   5.RDD、DataFrame、DataSet的相互转换操作    1 RDD-DataFrame、DataSet    2  DataFrame-RDD,DataSet    3 DataSet-RDD,DataFrame 二、Spark-SQL连接JDBC的方式

    2024年02月09日
    浏览(37)
  • spark-sql字段血缘实现

    Apache Spark是一个开源的大数据处理框架,它提供了一种高效、易于使用的方式来处理大规模数据集。在Spark中,数据是通过DataFrame和Dataset的形式进行操作的,这些数据结构包含了一系列的字段(也称为列)。字段血缘是Spark中的一个关键概念,它帮助我们理解数据的来源和流

    2024年02月02日
    浏览(44)
  • Hudi-集成Spark之spark-sql方式

    启动spark-sql 创建表 建表参数: 参数名 默认值 说明 primaryKey uuid 表的主键名,多个字段用逗号分隔。同 hoodie.datasource.write.recordkey.field preCombineField 表的预合并字段。同 hoodie.datasource.write.precombine.field type cow 创建的表类型: type = ‘cow’ type = \\\'mor’同 hoodie.datasource.write.table.ty

    2024年02月05日
    浏览(35)
  • Spark参数配置和调优,Spark-SQL、Config

    一、Hive-SQL / Spark-SQL参数配置和调优 二、shell脚本spark-submit参数配置 三、sparkSession中配置参数

    2024年02月13日
    浏览(40)
  • Hudi(7):Hudi集成Spark之spark-sql方式

    目录 0. 相关文章链接 1. 创建表 1.1. 启动spark-sql 1.2. 建表参数 1.3. 创建非分区表 1.4. 创建分区表 1.5. 在已有的hudi表上创建新表 1.6. 通过CTAS (Create Table As Select)建表 2. 插入数据 2.1. 向非分区表插入数据 2.2. 向分区表动态分区插入数据 2.3. 向分区表静态分区插入数据 2.4

    2024年02月06日
    浏览(35)
  • spark-sql: insert overwrite分区表问题

    用spark-sql,insert overwrite分区表时发现两个比较麻烦的问题: 从目标表select出来再insert overwrite目标表时报错:Error in query: Cannot overwrite a path that is also being read from. 从其他表select出来再insert overwrite目标表时,其他分区都被删除了. 印象中这两个问题也出现过,但凭经验和感觉,

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包