Spark SQL数据源:Hive表

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


一、Spark SQL支持读写Hive

Spark SQL还支持读取和写入存储在Apache Hive中的数据。然而,由于Hive有大量依赖项,这些依赖项不包括在默认的Spark发行版中,如果在classpath上配置了这些Hive依赖项,Spark就会自动加载它们。需要注意的是,这些Hive依赖项必须出现在所有Worker节点上,因为它们需要访问Hive序列化和反序列化库(SerDes),以便访问存储在Hive中的数据。

在使用Hive时,必须实例化一个支持Hive的SparkSession对象。若系统中没有部署Hive,则仍然可以启用Hive支持(Spark SQL充当Hive查询引擎)。Spark对Hive的支持包括连接到持久化的Hive元数据库、Hive SerDe、Hive用户定义函数、HiveQL等。如果没有配置hive-site.xml文件,Spark应用程序启动时,就会自动在当前目录中创建Derby元数据库metastore_db,并创建一个由spark.sql.warehouse.dir指定的数据仓库目录(若不指定,则默认启动Spark应用程序当前目录中的spark-warehouse目录)。需要注意的是,从Spark2.0.0版本开始,hive-site.xml中的hive.metastore.warehouse.dir属性不再使用了,代替的是使用spark.sql.warehouse.dir指定默认的数据仓库目录。

二、Spark配置hive-site.xml

将Hive配置文件hive-site.xml拷贝到Spark配置目录,执行命令:cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf
Spark SQL数据源:Hive表

进入Spark配置目录,编辑Hive配置文件hive-site.xml
Spark SQL数据源:Hive表

Spark SQL数据源:Hive表

<property>
    <name>spark.sql.warehouse.dir</name>     
    <value>/user/spark/warehouse</value>
</property>

三、准备工作

先要启动HDFS和Spark
Spark SQL数据源:Hive表

(一)启动Hive的metastore

执行命令:hive --service metastore &
Spark SQL数据源:Hive表
注意:博主这里执行命令时,出现了大量的警告,这里就不解决了,不影响后续操作,警告如下:
Spark SQL数据源:Hive表

(二)启动Spark Shell

执行命令:spark-shell --master spark://master:7077
Spark SQL数据源:Hive表
这里的警告信息表明,连接 MySQL 数据库时未做身份验证,不建议这样做。

要解决这个问题,有以下两种方法:

  1. 显式地禁用 SSL:在连接 MySQL 数据库的时候添加 useSSL=false 参数。这种方式不安全,不建议使用,但是可以在测试环境下暂时解决问题。

  2. 启用 SSL 并提供正确的信任库:在连接 MySQL 数据库的时候设置 useSSL=true,并提供正确的信任库用于服务器证书验证。这种方式更加安全。你可以参考 MySQL 官方文档来设置信任库。在默认情况下,Java 会使用位于 $JAVA_HOME/jre/lib/security 目录下的 cacerts 文件作为信任库。你可以通过使用 keytool -list 命令来查看其中的证书。

四、Spark读写Hive数据

(一)导入SparkSession

执行命令:import org.apache.spark.sql.SparkSession
Spark SQL数据源:Hive表

(二)创建SparkSession对象

val spark = SparkSession.builder()
   .appName("Spark Hive Demo")
   .enableHiveSupport()   // 开启Hive支持  
   .getOrCreate()

执行上述命令
Spark SQL数据源:Hive表

(三)执行HiveQL语句

调用SparkSession对象的sql()方法可以传入需要执行的HiveQL语句。

1、创建Hive表

创建一张Hive表student,并指定字段分隔符为半角逗号“,”,执行命令:spark.sql(“CREATE TABLE IF NOT EXISTS student(id INT, name STRING, gender STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’”)
Spark SQL数据源:Hive表

2、导入本地数据到Hive表

查看本地文件/home/student.txt的内容
Spark SQL数据源:Hive表
将该文件数据导入表student中,执行命令:spark.sql("LOAD DATA LOCAL INPATH '/home/student.txt' INTO TABLE student")
Spark SQL数据源:Hive表

3、查询Hive表数据

查询表student的数据并显示到控制台,执行命令:spark.sql(“SELECT * FROM student”).show()
Spark SQL数据源:Hive表
按性别分组统计平均年龄,执行命令:spark.sql(“SELECT gender, AVG(age) FROM student GROUP BY gender”).show()
Spark SQL数据源:Hive表

4、创建表时指定存储格式

创建一个Hive表test,数据存储格式为Parquet(默认为普通文本格式),执行命令:spark.sql(“CREATE TABLE test (name STRING, age INT) STORED AS PARQUET”)
Spark SQL数据源:Hive表

5、将数据帧数据写入Hive表

使用saveAsTable()方法可以将数据帧数据写入指定的Hive表中。

加载student表数据得到数据帧
Spark SQL数据源:Hive表导入SaveMode类,执行命令:import org.apache.spark.sql.SaveMode
Spark SQL数据源:Hive表
将数据帧数据写入hive表,执行命令:studentDf.select(“name”, “age”).write.mode(SaveMode.Overwrite).saveAsTable(“test”)
Spark SQL数据源:Hive表
查询test表数据,执行命令:spark.sql(“select * from test”).show()
Spark SQL数据源:Hive表

6、导入HDFS数据到Hive表

查看HDFS文件/student/input/student.txt的内容
Spark SQL数据源:Hive表
创建Hive表student1,执行命令:spark.sql(“CREATE TABLE IF NOT EXISTS student1 (id INT, name STRING, gender STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’”)
Spark SQL数据源:Hive表
将该文件数据导入表student1中,执行命令:spark.sql(“LOAD DATA INPATH ‘hdfs://master:9000/student/input/student.txt’ INTO TABLE student1”)
Spark SQL数据源:Hive表
查看表student1的内容,执行命令:spark.table(“student1”).show()
Spark SQL数据源:Hive表

(四)在Hive客户端查看生成的hive表

查看三张表:student,student1和test

输入hive进入hive命令行
Spark SQL数据源:Hive表
Spark SQL数据源:Hive表文章来源地址https://www.toymoban.com/news/detail-504230.html

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

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

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

相关文章

  • 4.2 Spark SQL数据源 - 基本操作

    案例演示读取Parquet文件 查看Spark的样例数据文件users.parquet 1、在Spark Shell中演示 启动Spark Shell 查看数据帧内容 查看数据帧模式 对数据帧指定列进行查询,查询结果依然是数据帧,然后通过write成员的save()方法写入HDFS指定目录 查看HDFS上的输出结果 执行SQL查询 查看HDFS上的输

    2024年02月08日
    浏览(47)
  • Spark大数据处理讲课笔记4.2 Spark SQL数据源 - 基本操作

      目录 零、本讲学习目标 一、基本操作 二、默认数据源 (一)默认数据源Parquet (二)案例演示读取Parquet文件 1、在Spark Shell中演示 2、通过Scala程序演示 三、手动指定数据源 (一)format()与option()方法概述 (二)案例演示读取不同数据源 1、读取房源csv文件 2、读取json,保

    2024年02月09日
    浏览(44)
  • 设计一个AI Faas API 系统,支持自然语言生成SQL,并查询数据源数据返回表数据,API开发完成即可线上使用

    设计一个AI Faas API 系统,支持自然语言生成SQL,并查询数据源数据返回表数据。同时,支持API开发完成即可线上使用。给我详细系统设计说明和完整的Golang代码,解释说明。5000字以上。 An AI Faas API system is designed to support Natural language generation to generate SQL, query data source data and

    2024年02月07日
    浏览(53)
  • 多数据源切换、读写分离-02

    使用dynamic进行数据源切换、读写分离 特性 1、支持数据源分组 ,适用于多种场景纯粹多库读写分离一主多从混合模式。 2、支持数据库敏感配置信息 加密 ENC()。 3、支持每个数据库独立初始化表结构schema和数据库database。 4、支持无数据源启动,支持懒加载数据源(需要的时

    2024年02月16日
    浏览(35)
  • Spark数据源educoder

    第1关:SparkSQL加载和保存         在右侧编辑器补充代码,加载 people.json 文件,以覆盖的方式保存到 people 路径里,继续加载 people1.json 文件,以附加的方式保存到 people 路径里,最后以表格形式显示 people 里前 20 行 Dataset 。

    2024年02月04日
    浏览(47)
  • SpringBoot从数据库读取数据数据源配置信息,动态切换数据源

            首先准备多个数据库,主库smiling-datasource,其它库test1、test2、test3         接下来,我们在主库smiling-datasource中,创建表databasesource,用于存储多数据源相关信息。表结构设计如下         创建好表之后,向表databasesource中存储test1、test2、test3三个数据库的相关配置

    2024年01月16日
    浏览(68)
  • springboot hive mysql 多数据源切换

    本次实验重在多数据源切换 性能不在考虑其中 开发环境: hive 3.1.3 mysql 8.0.33 jdk 1.8 maven 3.9.1 idea 2023.1 springboot 2.7.11 HikariCP 连接池 实验效果:从 hive 中迁移数据到 MySQL pom.xml springboot 配置文件 application.yml pojo 类 mapper 接口 mybatis 映射配置文件 多数据配置 多数据源切换工具类

    2024年02月01日
    浏览(76)
  • spring多数据源动态切换的实现原理及读写分离的应用

    AbstractRoutingDataSource 是Spring框架中的一个抽象类,可以实现多数据源的动态切换和路由,以满足复杂的业务需求和提高系统的性能、可扩展性、灵活性。 多租户支持:对于多租户的应用,根据当前租户来选择其对应的数据源,实现租户级别的隔离和数据存储。 分库分表:为了

    2024年02月14日
    浏览(39)
  • Spring - 配置支持多数据源

    在SpringBoot工程中整合多数据源,和在SSM工程中整合稍微有一点区别。 具体整合步骤如下: 1、在application.properties中配置出多个数据源 2、在代码中创建出mapper目录,在mapper目录下创建出不同数据源的目录 创建出目录 MySQL数据源的Mapper SQL Server数据源的Mapper 3、创建config packa

    2024年02月01日
    浏览(41)
  • 【Spring AOP + 自定义注解 + 动态数据源 实现主从库切换&读写分离】—— 案例实战

                                                 💧 S p r i n g A O P + 主从数据源切换 + 读写分离 + 自定义注解案例实战! color{#FF1493}{Spring AOP + 主从数据源切换 + 读写分离 + 自定义注解 案例实战!} Sp r in g A OP + 主从数据源切换 + 读写分离 + 自定义注解案例

    2024年02月15日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包