知识回顾
###(1)hadoop简介 数据存储与数据计算 hdfs :通过分布式文件存储对数据进行存储; MapReduce:通过MapReduce进行数据的计算;
(2)hadoop生态圈简介
实时数仓: spark 、 kafka等等
离线数仓: hdfs 、 MapReduce 、 sqoop 、 hive等工具
(3)关系型数据库与非关系型数据库
关系型数据库:传统的数据库,Oracle、MySQL等等;
非关系型数据库:HBASE 、 Redis等等
- 注:非关系型数据库中存储数据本来没有任何关系,在使用之前需要通过Java等语言进行关系建立再对数据进行操作;
(4)HDFS中一些简单的操作语句
a.增
b.删
c.改
d.查
e.关闭安全模式
d.从主机上传文件到hdfs
一、HIVE简单介绍
HIVE - 建立数仓的一种工具,数仓引擎 hdfs MapReduce sqoop hive 工作原理: sqoop 会将数据导入到hdfs中进行存储,任何MapReduce 对hdfs中存储的数据进行计算,但MapReduce中使用的是Java语言,而我们就可以通过hive通过hivesql语言在hive中编译好之后,通过hadoop生态圈将hivesql转换为MapReduce程序;
二、启动hive
1. 存放元数据的地方
要了解标题中的意思,就得先了解什么是元数据
- 元数据:用于描述数据的数据(相当于Oracle的字段名)
这些元数据由MySQL来存放;
2.启动hadoop
3.启动hive
hive 在/opt/moudle/ 文件下的apache-hive-2.1.1-bin 目录之下;
4.hive的一些基本操作
4.1 查看数据库
show databases
查出来两个数据库,一个default和一个test;
4.2 查看表
show tables
上面是我上午建的一个test1表
4.3 使用(选择)数据库
use default
4.4 创建表
在hive中可以直接使用类SQL语言(MySQL)进行表的创建操作,如下所示: 再通过show tables 命令查看表是否创建成功,如下所示: 上面明显可以看到我们创建的test2表已经被创建,我们还可以通过desc test2 #目标表名 指令查看目标表结构:
4.5 创建数据库
create database testdb
创建后并查看的结果:
4.6 表的查询与数据插入
查询表: 原先创建的表test2中没有数据,下面我们试着向其中插入数据后再进行查询: hive中的没有delete和update语句;
4.7 在hdfs上运行hive中的语句及运行文件
hive -e "select * from t5"
hive -f './test5'
示例:创建一个学生表,里面包含学生ID(s_id)、学生姓名(s_name)、学生性别(s_sex);
建立数据文件stu_data(数据间使用Tab键进行分割):
1 张三 男
2 李四 男
3 王菲 女
4 刘玥 女
5 刘墉 男
6 黄辉冯 男
7 陈美嘉 女
8 胡一菲 不详
9 张伟 男
10 曾小贤 男
11 吕子乔 男
12 陆展博 男
13 林宛瑜 女
14 唐悠悠 女
15 秦羽墨 女
16 关谷神奇 男
17 大师兄 男
18 楼下小黑 男
建立建表文件c_stu_table(文件中限定使用Tab键作为分隔符):
create table stu_table (s_id int ,s_name string ,s_sex string)
row format delimited
fields terminated by '\t';
使用hive -f './c_stu_table' 创建表stu_table;
然后使用hive -e "select * from stu_table" 检查一下表是否被创建:
表创建成功,下面进行数据上传操作,代码如下
hive -e "load data local inpath'./stu_data'into table stu_table"
运行完上诉代码后验证一下表中数据是否以及上传进去: OK 题目完成;
|