资讯专栏INFORMATION COLUMN

hive入门

scq000 / 3022人阅读

摘要:入门概念数据仓库软件有助于使用读取,写入和管理驻留在分布式存储中的大型数据集。可以将结构投影到已存储的数据上。不应该用来进行实时的查询。因为它需要很长时间才可以返回结果是一种在之上的的数据库。

=====hive入门===== 1. 概念

Apache Hive™数据仓库软件有助于使用SQL读取,写入和管理驻留在分布式存储中的大型数据集。可以将结构投影到已存储的数据上。提供了一个命令行工具和JDBC驱动程序来将用户连接到Hive

主要面向查询操作,一般不进行删除和更新操作,因为hive处理的数据一般都是历史数据

hive允许开发者自定义mapreduce处理复杂的分析工作

hive是SQL解析引擎,它将SQL转换成M/R 程序,然后在hadoop执行

hive的表和数据其实就是hdfs的目录和文件

hdfs日志文件(数据源)-- mapreduce将结构投影到已存储数据上(解析引擎) -- 命令行工具和JDBC使用SQL(数据统计)

数据仓库:数据仓库是一个面向主题的,集成的,不可更新的,随时间不变化的数据集合,它用于支持企业或者组织的决策分析处理

hive和hbase区别

Hive适合用来对一段时间内的数据进行分析查询or统计查询,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果

Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。HBase可以用来进行实时查询,

数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。

2. hive的体系结构

hive的元数据

hive将元数据存储在数据库(metastore)中,支持mysql,derby,oracle数据库,默认使用内置derby数据库(只支持单链接)

hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否外部表),表的数据所在的目录等

hadoop

用hdfs进行存储,利用mapreduce进行计算

3. hive的安装

环境要求:

jdk并配置环境变量

mysql安装并启动用来做元数据存储(内嵌的derby数据库只支持单链接)

hadoop安装并启动(支持单机环境,伪分布模式,集群模式)

下载wget安装包.tar.gz并解压tar -zxvf xxx.tar.gz -C /home

将mysql驱动配置到hive的classpath目录下,上传放到$HIVE_HOME/lib目录即可,要注意驱动和mysql版本对应

修改配置文件$HIVE_HOME/conf

    HADOOP_HOME=/home/hadoop-standalone/hadoop-2.9.0
    export HIVE_CONF_DIR=/home/apache-hive-2.3.2-bin/conf

    
        
            javax.jdo.option.ConnectionURL 
            jdbc:mysql://172.18.113.120:3306/hive?createDatabaseIfNotExist=true 
         
         
            javax.jdo.option.ConnectionDriverName
            com.mysql.jdbc.Driver
        
        
            javax.jdo.option.ConnectionUserName
            root
        
        
            javax.jdo.option.ConnectionPassword
            123456
        
        
                hive.server2.webui.host
                master
        
        
                hive.server2.webui.port
                10002
        
    

格式化hdfs存储目录

$ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

init元数据存储仓库

$ $HIVE_HOME/bin/schematool -dbType  -initSchema

4. hive之CLI命令行方式

两种启动方式:

1.)直接输出$HIVE_HOME/bin/hive执行程序
2.)$HIVE_HOME/bin/hive --service cli

(-S 进入静默模式 -e '命令'不进入交互模式,直接执行命令)

常用的CLI命令(每个命令必须已分号结尾作为命令结束符,--开头是注释)

退出命令行 quit

查看数据库 show databases

查看表   show tables

查看表结构 desc 表名

查看内置函数 show functions

查看hdfs上文件 dfs -ls 目录

执行操作系统的命令 !命令

执行sql语句    select 语句

执行sql脚本文件  source sql文件

hive远程服务启动方式

端口号10000

启动方式:hive --service hiveserver2 &

jdbc或者odbc远程登录数据仓库对数据进行操作,必须启动远程服务以供连接

5. hive数据类型
hive数据类型有一下5种

* 数字类型
* 时间类型
* 字符串类型
* 其他类型
* 复杂类型

数字类型

TINGINT(1字节有符号整数,从-128至127)

SMALLINT(2字节有符号整数,从-32,768至32,767)

INT/ INTEGER(4字节有符号整数,从-2,147,483,648到2,147,483,647)

BIGINT(8字节符号整数,从-9,223,372,036,854,775,808至9,223,372,036,854,775,807)

FLOAT(4字节单精度浮点数)

DOUBLE(8字节双精度浮点数)

DECIMAL (可以自定义精度和范围)

NUMERIC

日期/时间类型

TIMESTAMP(注意:只能从Hive 0.8.0开始)

DATE(注意:只能从Hive 0.12.0开始)

INTERVAL(注意:只能从Hive 1.2.0开始)

字符串类型

STRING

VARCHAR

CHAR

其他类型

BOOLEAN

BINARY

复杂类型

1. ARRAYS       数组类型,由一系列相同数据类型元素组成
2. MAPS   集合类型,包看key-value键值对,可以通过key来访问元素
3. STRUCT 结构类型,可以包含不同数据类型元素,通过点语法获取元素
4. union: UNIONTYPE (Note: Only available starting with Hive 0.7.0.)

创建表,使用数据类型

        创建一张表,包含基本数据类型

        create table t_user
            (u_id int,
            u_name string,
            married boolean,
            salary double,
            birthday date
            ); -- 这里不能创建user表,换个表名t_user

        创建一张表,包含数组类型

        create table student (sid int,sname string,project array); 

        -- {1,"tom",["语文","数学","英语"]}

        创建一张表,包含map数据类型

        create table stu2(id int,name string,project map);

        -- {1,"tom",<"大学语文",65>}


        创建一张表,用array>

        create table stu3(id int,name string,grades array>);

        -- {1,"tom",[<"语文",85>,<"数学",85>]


        创建一张表,包含struct数据类型

            create table stu4(id int,info struct );

            --{1,{"tom",10,"男"}}
6. hive的数据存储

基于hdfs

没有专门的数据存储格式

存储结构主要包括:数据库,文件,表,视图

可以直接加载文本文件(.txt文件等)

创建表时,指定hive数据的列分隔符和行分隔符

表分类:内部表,分区表,外部表,桶表 + 视图

内部表

概念:

与数据库中的table在概念上是类似的

每一个table在hive中都有一个相应的目录存储数据,默认在/usr/hive/warehouse目录下,可以指定任何其他目录

所有的table不包括外部表,都保存在这个目录中

创建表例子

create table t1(id int,name string,age int); -- 默认在/usr/hive/warehouse目录下

create table t1(id int,name string,age int) location "/mytable/hive/t2"; -- 指定数据在hdfs上的存储位置

create table t1(id int,name string,age int) row format delimited fields terminated by ","; -- 指明列分隔符,默认列与列之间没有任何分隔符

create table t1 as select * from t2 row format delimited fields terminated by ","; -- 从一个表中的数据创建表并导入数据

alter table t1 add columns(english int); -- 添加列

分区表(partition)

概念

partition对应于数据库的partition列的密集索引(例如按照性别男女分成两个区)

在hive中,表的一个partition对应与标下的一个目录,所有的partition的数据都存储在对应的目录中

案例

create table t1(id int,name string) partitioned by (gender string) row format delimited fields terminated by ","; -- 按照gender列分区

insert into table t1 partition(gender="nan") select id,name from t2 where gender="nan";

外部表

概念

指向已近在hdfs中存在的数据,可以创建partition

它和内部表在元数据的组织上是相同的,而实际数据的存储则有较大的差异

外部表只有一个过程,加载数据和创建表同事完成,并不会移动到数据仓库目录中,只是与外部数据建立一个链接,当删除一个外部表时,仅删除改链接

例子

create external table t1 (id int,name string) row format delimited fields termicated by "," location "/input"; //对hdfs中已近存在的目录和文件创建一个链接

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8313.html

相关文章

  • 大数据入门指南(GitHub开源项目)

    摘要:项目地址前言大数据技术栈思维导图大数据常用软件安装指南一分布式文件存储系统分布式计算框架集群资源管理器单机伪集群环境搭建集群环境搭建常用命令的使用基于搭建高可用集群二简介及核心概念环境下的安装部署和命令行的基本使用常用操作分区表和分桶表视图 项目GitHub地址:https://github.com/heibaiying... 前 言 大数据技术栈思维导图 大数据常用软件安装指...

    guyan0319 评论0 收藏0
  • Gradle实战:执行sql操作hive数据库

    摘要:以下分为各部分来讲述我们的实现方案脚本配置文件代码使用方法数据产出。中的配置数据再在中新建一个名为的配置文件,用于存放连接数据库所需的相关参数。 查看原文:http://blog.csdn.net/u0108184... Gradle实战系列文章: 《Gradle基本知识点与常用配置》《Gradle实战:Android多渠道打包方案汇总》《Gradle实战:不同编译类型的包同设备共存...

    calx 评论0 收藏0
  • Gradle实战:执行sql操作hive数据库

    摘要:以下分为各部分来讲述我们的实现方案脚本配置文件代码使用方法数据产出。中的配置数据再在中新建一个名为的配置文件,用于存放连接数据库所需的相关参数。 查看原文:http://blog.csdn.net/u0108184... Gradle实战系列文章: 《Gradle基本知识点与常用配置》《Gradle实战:Android多渠道打包方案汇总》《Gradle实战:不同编译类型的包同设备共存...

    苏丹 评论0 收藏0
  • 大数据学习路线

    摘要:学习资料大数据最权威和最全面的学习资料就是官方文档。热门的大数据框架社区都比较活跃版本更新迭代也比较快,所以其出版物都明显滞后于其实际版本,基于这个原因采用书本学习不是一个最好的方案。 一、大数据处理流程 showImg(https://segmentfault.com/img/remote/1460000019667336?w=740&h=417);上图是一个简化的大数据处理流程图,...

    widuu 评论0 收藏0
  • 开始学习机器学习之前你必须要了解的知识有哪些?机器学习系列入门

    摘要:进入当前程序的学习系统的所有样本称作输入,并组成输入空间。结束语注意这篇文章仅仅是我接下来的机器学习系列的第一篇,后续还会有更多的内容。 往期回顾:统计学习方法第...

    leoperfect 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<