Spark SQL大数据分析快速上手-Hive安装

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客

《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书

大数据与数据分析_夏天又到了的博客-CSDN博客

由于Spark SQL的基础语法及常见操作是通过Spark SQL CLI命令行进行的,该工具可以用来在本地模式下运行Hive的元数据服务,并且通过命令行执行针对Hive的SQL查询。因此,首先需要安装Hive。

由于Hive是运行在Hadoop下的数据仓库,因此必须在已经安装好Hadoop的环境下运行Hive,并且要正确配置HADOOP_HOME环境变量。

Hadoop完全分布式环境搭建步骤_hadoop 开发环境搭建及hdfs初体验-CSDN博客

  1. 下载Hive

Hive下载地址如下:

复制代码
https://archive.apache.org/dist/hive/

由于Spark 3.3.1可以使用的Hive版本包括0.12.0~2.3.9,因此这里按作者习惯选用了Hive 1.2.2版本,具体下载地址如下:

复制代码
https://archive.apache.org/dist/hive/hive1.2.2/apache-hive-1.2.2-bin.tar.gz
  1. 上传并解压Hive

Hive安装包下载下来后,文件上传Linux当前用户目录下,并解压Hive安装文件:

$ tar -zxvf ~/apache-hive-1.2.2-bin.tar.gz -C .

目录名称太长了,修改一下名称:

复制代码
$ mv apache-hive-1.2.2-bin/ hive-1.2

配置Hive的环境变量是可选的,是为了方便执行Hive脚本:

复制代码
export HIVE_HOME=/app/hive-1.2

export PATH=$PATH:$HIVE_HOME/bin
  1. 启动Hadoop,登录Hive命令行

首先启动Hadoop。

然后使用hive脚本,登录Hive命令行界面。此时Hive要访问Hadoop的core-site.xml文件,并访问fs.defaultFS所指的服务器。

直接输入hive命令就可以登录Hive的命令行:

复制代码
[hadoop@server201 ~]$ hive

hive>
  1. 一些基本的命令

类似于MySQL的SQL命令,都可以在Hive下运行。

(1)查看所有数据库:

复制代码
hive> show databases;
OK
default
Time taken: 0.025 seconds, Fetched: 1 row(s)

(2)查看默认数据库下的所有表:

复制代码
hive> show tables;
OK
Time taken: 0.035 seconds

(3)创建一张表,并显示这张表的结构:

复制代码
hive> create table stud(id int,name varchar(30));
OK
Time taken: 0.175 seconds
hive> desc stud;
OK
id                  	int
name                	varchar(30)
Time taken: 0.193 seconds, Fetched: 2 row(s)

(4)显示这张表在Hive中的结构:

复制代码
hive> show create table stud;
OK
CREATE TABLE `stud`(
  `id` int, 
  `name` varchar(30))
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'  
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat'  数据存储类型
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat ' 输出类型
LOCATION
  'hdfs://server201:8020/user/hive/warehouse/stud' 保存的位置
TBLPROPERTIES (  表的其他属性信息
  'transient_lastDdlTime'='1530518761')
Time taken: 0.128 seconds, Fetched: 13 row(s)

(5)向表中写入一行记录。

由于Hive会将操作转换成MapReduce程序,因此INSERT语句会被转换成MapReduce程序。这个效率比较低,尽量不要使用INSERT语句写入数据,而是采用Hive分析现有的数据。例如:

复制代码
hive> insert into stud values(1,'Jack');

运行结果中有如下内容:

复制代码
Stage-1 map =0%,reduce =0%

Stage-1 map =100%,  reduce =0%,Cumulative CPU 2.4 sec

可见,一个简单的INSERT语句确定执行了MapReduce程序,所以效率不会太高。

(6)不支持UPDATE和DELETE:

复制代码
hive> update stud set name='Alex' where id=1;
FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.
hive> delete from stud where id=1;
FAILED: SemanticException [Error 10294]: Attempt to do update or delete using transaction manager that does not support these operations.

由以上运行结果可见,Hive分析的数据是存储在HDFS上的,HDFS不支持随机写,只支持追加写,所以在Hive中不能使用UPDATE和DELETE语句,只能使用SELECT和INSERT语句。

相关推荐
程序员小羊!1 天前
数仓数据基线,在不借助平台下要怎么做?
大数据·数据仓库
Hello.Reader1 天前
Flink SQL 的 LOAD MODULE 深度实战——加载 Hive 模块、理解模块发现与常见坑
hive·sql·flink
老徐电商数据笔记1 天前
技术复盘第二篇:电商数据主题域划分企业级实践
大数据·数据库·数据仓库·零售·教育电商·技术面试
亲亲菱纱1 天前
hive数仓分层
数据仓库
泰克教育官方账号1 天前
泰涨知识 | Hadoop的IO操作——压缩/解压缩
大数据·hadoop·分布式
老徐电商数据笔记1 天前
技术复盘第三篇:百果园新零售核心业务流程主题域划分详解
大数据·数据仓库·零售·技术面试
qq_381454992 天前
大数据时代的分布式基石Hadoop
hadoop
howard20052 天前
Hive实战任务 - 9.1 实现词频统计
hive·词频统计
colorknight2 天前
数据编织-异构数据存储的自动化治理
数据仓库·人工智能·数据治理·数据湖·数据科学·数据编织·自动化治理
满目山河•2 天前
二、复制三台虚拟机
hive·hadoop·hbase