首页 » Hive » 正文

Hive从入门到精通-第一篇

发表于: 大数据的那些坑-BigDataBugs · 2017-8-1 ·  46 views  ·  0 replies 

Hive

—————-

The Apache Hive ™ data warehouse software facilitates reading, 

writing, and managing large datasets residing in distributed storage using SQL. 

Structure can be projected onto data already in storage.

A command line tool and JDBC driver are provided to connect users to Hive.

数据仓库软件.使用SQL用来读写以及管理分布式数据集的机制。

OLAP //on line analyze process,在线分析处理。

OLTP //on line transaction process,在线事务处理.

NOSQL

——————-

Not only sql,不仅仅是sql

不是关系型数据,文档型。

SQL

——————

RDBMS.关系型数据库管理系统。

HQL

—————–

Hive Query language.

hive支持三种数据结构:table + paritition() + bucket(hash).

facebook,

不是:1.关系型数据库

     2.不是OLTP

3.不适于实时查询和行级更新。

特性:1.schema存储在数据库中,处理hdfs的数据。

     2.OLAP

3.HQL

4.可伸缩、可扩展,速度快。

Hive架构

——————-

client : webui | CLI | …

hive   : meta store + Hive 处理引擎(以及执行引擎)

底层   : hadoop(hdfs + mr)

hive组件

——————-

1.metadata,存在rdbms中的(元数据:table + database + column)

2.HQl处理引擎:

写查询语句用于MR作业。

3.Execute engine

执行引擎,执行查询工作,得到结果。

4.HDFS/HBase

存储数据.

hive安装

————–

1.共享·

2.tar并创建符号连接

$>tar -xzvf apache-hive-2.1.0-bin.tar.gz -C /soft/

$>cd /soft

$>ln -s apache-hive-2.1.0-bin hive

3.配置环境变量

[/etc/profile]

export HIVE_HOME=/soft/hive

export PATH=$PATH:$HIVE_HOME/bin

4.source环境变量

#>source /etc/profile

5.启动hive

$>hive

6.出现错误正常。

配置hive

—————–

1.复制hive/conf/hive-env.sh.template到hive/conf/hive-env.sh

2.导入hadoop_home环境变量即可。

[/soft/hive/conf/hive-env.sh]

HADOOP_HOME=/soft/hadoop

3.复制hive/conf/hive-default.xml.template到hive/conf/hive-site.xml

自定义的配置。

4.初始化元数据库

$>bin/schematool -initSchema -dbType derby

5.在当前目录下生成metstore_db文件夹

6.hive-site.xml

配置环境变量

———————————–

[hive/conf/hive-site.xml]

${system:java.io.tmpdir}=/home/centos/hive

${system:user.name}=centos

删除文件

—————-

$>rm -f centos/'${system:java.io.tmpdir}' //删除文件

重新初始化元数据库

——————

$>hive/bin/schematool -initSchema -dbType derby

登录hive shell

——————-

$>cd hive/bin

$>hive

hive命令

—————-

$>exit; //

将元数据存放到mysql数据库中

—————————–

1.修改hive-site.xml连接信息。

[/soft/hive/conf/hive-site.xml]

  <property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

<description>Driver class name for a JDBC metastore</description>

  </property>

  <property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://192.168.231.1:3306/hive</value>

<description>

  JDBC connect string for a JDBC metastore.

  To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.

  For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.

</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>root</value>

<description>password to use against metastore database</description>

  </property>

2.复制mysql驱动包到/hive/

3.初始化schema

$>schematool -initSchema -dbType mysql

4.查看mysql数据库

5.登录hive

$>hive

hive数据类型

—————–

数字:tinyint byte 1

smallint short 2

int int 4

bigint long 8

String:

'' | ""

varchar //0-65535

char //255

Timestamp //YYYY-MM-DD hh:mm:ss.fffffffff精确到纳秒

data //YYYY-MM-DD

decimal //常量,decimal(10,0) (10,2) == (刻度,精度)

创建hive的数据库

——————

mysql中存放的hive的元数据(表结构信息、库信息、列信息…)。

1.登录hive shell

$>hive

$hive>create database myhive ; //对应创建 hdfs://s201:8020/user/hive/warehouse/myhive.db

//在mysql数据库中有对应记录

$mysql>select * from hive.dbs ; //

$hive>show databases; //显式数据库信息

$hive>drop database myhive; //删除数据库信息

$hive>use myhive; //使用数据库

$hive>desc formatted users; //显式格式化的表信息,(带库信息)

2.

hive直接执行sql语句

———————-

$>hive -e "create table myhive.t1(id int)"

hive执行脚本

———————–

1.创建hive脚本

[h.sql]

drop table myhive.t1 ;

2.执行脚本

$>hive -f h.sql

创建表语法

——————–

CREATE TABLE IF NOT EXISTS employee (eid int, name String,salary String, destination String)

COMMENT ‘Employee details’

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

LINES TERMINATED BY '\n'

STORED AS TEXTFILE;

$hive>create table myhive.t1(id int ,name string,age int)

>ROW FORMAT DELIMITED

>FIELDS TERMINATED BY '\t'

>LINES TERMINATED BY '\n'

>STORED AS TEXTFILE;

使用load命令加载本地文件到hive(hadoop),

—————————————–

语法:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 …)]

load data local inpath ~/users.dat overwrite into table t1 ; 

local //指定本地路径

overwrite //覆盖表数据(全部表数据)

partition //分区表

修改表结构

—————-

$>alter table t1 rename to t2 ; //重命名

$>alter table t1 add columns (col1 int); //添加列

$>alter table t1 change married m string ; //修改列(可以改列名)

$>alter table t1 replace married int; //替换列

$>alter table t1 drop column married; //??????删除列????????

hive脚本命令

——————–

$>hive –help //帮助

$>hive -e "xx" //一次性命令

$>hive -S -e "xx" //静态信息

$>hive -f "xx.sql"//执行脚本

$>hive -i .hiverc //-i在启动hive时,执行指定的文件。

$hive>tab //查看帮助命令

$>!cmd xx ; //执行shell命令 !echo "hello world"

$>dfs -lsr /; //执行dfs命令

$hive>set hive.cli.print.header=true ; //动态设置属性

$hive>show databases like 'my*' ; //统配符

$hive>create database db1 location '/x/x/x' //指定数据库在hdfs的位置

$hive>drop database db1 cascade //级联删除数据库

修改元数据库仓库在hdfs上的目录

———————————

[hive/conf/hive-site.xml]

<property>

<name>hive.metastore.warehouse.dir</name>

<value>/user/hive/warehouse</value>

<description>location of default database for the warehouse</description>

</property>

本文链接: http://www.bigdatabugs.com/
0 喜欢+
:下一篇»

相关文章

Hive从入门到精通-第四篇

hive ———- 1.事务支持 stored as tex...

Hive从入门到精通-第三篇

beeline ———— 0.hive $>hiv...

Hive从入门到精通-第二篇

hive直接执行sql语句 ————&#...

  1. 还没有任何评论,你来说两句吧

留个评论