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语句。

相关推荐
tsyjjOvO1 天前
SpringMVC 从入门到精通
数据仓库·hive·hadoop
Francek Chen1 天前
【大数据存储与管理】分布式数据库HBase:05 HBase运行机制
大数据·数据库·hadoop·分布式·hdfs·hbase
zzzzzwbetter1 天前
Hadoop完全分布式部署-Master的NameNode以及Slaver2的DataNode未启动
大数据·hadoop·分布式
weixin_449310842 天前
ETL转换和数据写入小满OKKICRM的技术细节
数据仓库·php·etl
IvanCodes2 天前
Hive IDE连接及UDF实战
ide·hive·hadoop
yumgpkpm2 天前
华为昇腾910B 开源软件GPUStack的介绍(Cloudera CDH、CDP)
人工智能·hadoop·elasticsearch·flink·kafka·企业微信·big data
lifewange2 天前
Hive数据库
数据库·hive·hadoop
五月天的尾巴4 天前
hive数据库模糊查询表名
hive·查询表名
蓝魔Y4 天前
hive—1.1、执行优化
hive
快乐非自愿4 天前
OpenClaw 生态适配:Hadoop/Hive 技能现状与企业级集成方案
大数据·hive·hadoop·分布式·openclaw