(3人评价)
Hive详解及实战

Hive基础入门到实战

价格 ¥ 290.00 ¥580.00 5折
活动
会员免费学 购买课程

分区表:

 

hive分区表实现的功能:

将表中的数据进行分区,在进行分区检索时,直接加载对应分区的数据。对于HDFS来说,多了一级目录。对数数据处理来说,直接处理了需要的数据,提前进行了过滤。

[展开全文]

hive中表的类型:

管理表; MANAGED_TYPE

外部表:EXTERNAL

 

删除管理表时会删除元数据和数据目录

删除外部表时会删除元数据,但是不会删除数据目录和文件,可以保证数据的安全性

 

企业中:

全部创建外部表,同时创建多张表,用于分析不同的业务

通过location指定同一份数据源

[展开全文]

表:

创建:

create table if not exists tbl3(

id string,

name string

)

row format delimited fields terminated by '\t'

stored as textfile

location '/user/hadoop/stu_info.txt';

 

create table tbl3_as AS select name from tbl3;

 

create table tbl3_like like tbl3;

 

as和like的区别:

as将子查询的结果放入新的表中,包括数据和表结构,like只是复制了表结构

 

删除 

drop table tbl3_like;

同时删除元数据和目录

 

清空

truncate table tbl3_as;

 

desc

desc tbl3;

desc formatted tbl3;

desc extended tbl3;

 

 

 

 

[展开全文]

数据库与表的管理:

数据库:

创建,

create database if not exists tmp1;

use tmp1;

ceate table if not exists tmp_stu(

id string,

name string

) row format delimited fields terminated by '\t';

load data inpath '/user/hadoop/stu.txt' into table tmp_table;

本地导入,将本地的文件复制到了hdfs上表的目录下

如果是从hdfs导入,直接将文件移动到表的目录下

 

指定数据库在hdfs上的目录

create database if not exists tmp2 location '/user/hive/tmp2';

location 也有以用于创建表

 

删除,

drop database tmp1 ;

删除非空数据库:

drop database tmp1 cascade;

删除时会删除元数据和目录

 

查看信息

desc database tmp2;

desc database extended tmp2;

[展开全文]

hive -help

启动时进入指定的数据库:

hive --database student

在shell执行sql语句:单条

hive -e "show databases"

hive --database student -e "select * from stu_info"

在shell执行一个包含sql语句的文件:

多条

hive -f /home/hadoop/hivesql.txt

 

运行hive时传递变量参数(可以是自定义,也可以配置变量):

hive --hiveconf hive.cli.print.header=false

 

hive 交互式操作:

退出:exit/quit

set

查看属性值:

set hive.cli.print.header

修改属性值(立即生效):

set hive.cli.print.header=true

!用于在hive shell中执行linux命令

!ls /;

dfs命令用于在hive shell中执行hdfs的命令

 

 

 

 

 

 

[展开全文]

hive常用属性的配置:

数据仓库目录的配置(hive.metastore.warehouse.dir):

默认值:/user/hive/warehouse

同是也是defaut数据库的默认存储目录

 

启用自定义的日志配置信息:

hive-log4j.properties

 

显示当前数据库

hive.cli.print.current.db

显示表头信息

hive.cli.print.header

 

[展开全文]

hive基本命令和常用属性:

数据库:

create database if not exists student;

show databases;

use student;

 表:

将文件映射成表,表的结构要与文件的结构一致,指定分隔符

create table if not exists stu_info(

name string, 

number string

)  row format  delimited fields terminated by '\t';

加载数据:

load data local inpath '/home/hadoop/student.txt' into table stu_info;

 

select * from stu_info;

select name from stu_info;

show tables;

 

hive的原理:

所有的检索查询运行的是mapreduce

hive中的数据库、表在hdfs上都是一个文件目录

 

 函数:

show functions;

查看函数表法:

desc function substring;

desc function extended; 

 

 

[展开全文]

创建hive-site.xml文件

配置数据库:

<configuration>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://hadoop1:3306/metastore?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.cj.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
  <description>username to use against metastore database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>mypwd</value>
  <description>password to use against metastore database</description>
</property>

</configuration>

 

将mysql驱动放入hive lib目录下

 

 

 

[展开全文]

配置mysql存储元数据

默认是derby数据库:

缺点:derby存储使用文件存储,同一时间只能启动一个数据库实例,安全性不高

 

配置使用mysql:

安装mysql:

chkconfig mysqld on

chkconfig mysqld --list

mysqladmin -u root password newpassword

mysql -u root -p

 

[展开全文]

hive的架构:

metastore:hive元数据,默认存储在自代的derby数据库中,在企业中一般会修改为mysql或者oracle数据库

client:cli(hive shell), jdbc, webui

driver:驱动

sqlparser: 解析器

query optimizer:查询优化

physical plan: 物理计划

excution: 执行

mapreduce:用于hive分析计算,将sql进行解析并处理

hdfs: 用于存储hive表中的数据,默认的hive的存储路径: /user/hive/warehouse

 

hvie支持的计算框架: mr, spark, tez

 

 

[展开全文]

Hive安装部署及其架构:

Hive常用版本:

0.13.1:提供了更多的SQL接口,稳定性更高

1.2.1: 提供更多的SQL接口,性能更优

 

修改配置文件:

hive-env.sh:

HADOOP_HOME=..

HIVE_CONF_DIR=...

 

环境变量的功能:

用于全局访问,用于框架集成时的访问

 

创建数据仓库目录:

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

hive分析的本质:将数据文件映射成表,使用SQL进行分析

MapReduce分析的问题:模式固定,没有schema,缺少类似于sql的查询语言,开发成本比较高

SQL on HADOOP:为Hadoop分析处理提供SQL语言的支持

Hive:FaceBook实现并开源了Hive框架

presto:FaceBook开源,内存式的处理,京东用的比较多

impala:基于内存式的SQL处理框架

spark SQL

 

Hive的特点:

建立在Hadoop之上,处理结构化的数据

存储依赖于HDFS:Hive表中的数据是存储在HDFS之上,

SQL语句的执行依赖于MapReduce,

让hadoop实现了SQL的接口,实际上是将SQL语句转化为MapReduce程序,

Hive的本质就是Hadoop的客户端

 

HQL作为查询接口

支持UDF(user defination function),自定义存储格式

适合离线处理

 

[展开全文]

pv统计

数据采集

数据清洗:

数据字段的提取,数据字段的补充,字段格式化

数据分析(MapReduce):

input, map, shuffle, reduce, output

 

使用SQL实现:

tbl_log {

ip, time, url

}

 

 

select hour, count(url) pv from 

select ip, substring(time, 9, 2) hour, url 

from tbl_log

) group by hour;

 

 

 

 

 

 

[展开全文]