SparkSQL 读写_Hive_读取 Hive 表 | 学习笔记

简介: 快速学习 SparkSQL 读写_Hive_读取 Hive 表

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段SparkSQL 读写_Hive_读取 Hive 表】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12060


SparkSQL 读写_Hive_读取 Hive 表

 

内容介绍:

一、相关命令

二、实操

三、误区

 

一、相关命令

要使用 SparkSQL 语句访问 Hive 表仅需要三个命令即可完成,如下:

scala> spark.sql("use spark integrition")

scala> val resultDF = spark.sql("select * from student limit 10") scala>resultDF.show()

值得注意的是,之前的课程中整合了 SparkSQL 和 Hive,但是这种整合只作用在集群当中,也就是说只有使用 SparkShell 或者 SparkSubmit 时候才能享受整合的便利。

换言之,对于写本地程序的场景,这种整合是无法使用的。因为我们之前学习过的整合,是把配置文件拷贝到 Spark 的对应的 conf 目录下,因此必须要在集群当中执行才能够享受这种整合的便利。

 

二、实操

1、开启 SparkShell

打开代码编辑窗口,输入 exit 退出 Hive,并清空之前的屏幕,进行代码编辑:

cd /export/servers/spark

//进入 spark

bin/spark-shell --master spark://node01:7077

//使用 bin/spark-shell 命令运行,并指定其运行位置为集群 node01:7077。

//但以上方式往往会导致卡顿,因此可以选择直接使用 local 的形式运行

bin/spark-shell --master local [6]

开启 spark-shell ,待运行正常后,可以发现其读取了很多 Hive 的 config。接下来直接进行 SparkSQL 查询。

2、查询命令

之前我们学习使用 SQL 查询时,应先把 DateFrame 或者 DateSite 注册为一张空白表。但是现在可以直接执行命令

scala> spark.sql("use spark01")

//使用之前创建的数据库,显示结果为 res0:org.apache.spark.sql.DateFrame = [ ]

scala> spark.sql("select * from student limit 10")

//从 student 中查询,且仅限制显示的数据量为 100 条,结果显示 res1:org.apache.spark.sql.DateFrame = [name:string,age:

int ... ]more field,即创建了变量 res1,其类型为 DateFrame 。

scala>res1.show()

//进行相应的查看和显示,通过运行最终显示结果无误。

image.png

在使用体验上,比直接在 Hive 窗口里执行的速度要稍快一些,对于更大的数据量执行速度相对而言会更快。

 

三、误区

使用 scala> spark.sql("use spark01")命令写入 SQL 语句时,有人认为该语句在默认情况下不会立刻执行,因为有可能是 transfomation。

image.png

但这启示是一种不太准确的说法,与之相反,该语句(包括后面的命令语句)会立刻执行。

可以理解为只有通过 show 方法才能最终获取且显示数据,实际操作中不需要每执行一次 SQL 就执行一次 show 方法,而只有在需要获取数据的时执行一次 show 方法即可,且前面的 SQL 语句也会默认执行。

相关文章
|
7月前
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
113 0
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
67 0
|
6月前
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
231 1
|
7月前
|
SQL 关系型数据库 MySQL
Hive 表注释乱码解决
Hive元数据在MySQL默认使用`latin1`字符集导致注释乱码。可通过修改MySQL配置文件`/etc/my.cnf`,在`[mysqld]`和末尾添加`character-set-server=utf8`等设置,重启MySQL。然后在Hive数据库中调整表字段、分区字段、索引注释的字符集。注意,这仅对新表生效。测试创建带注释的Hive表,问题解决。
103 0
|
7月前
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
|
7月前
|
SQL HIVE
Hive表删除数据不支持使用Delete From...
Hive表删除数据不支持使用Delete From...
339 0
|
7月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
152 1
|
7月前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
112 0
|
7月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
7月前
|
SQL JSON 算法
hive学习笔记
hive学习笔记