欢迎投稿

今日深度:

hive 安装文档,

hive 安装文档,


零、介绍

    hive是半个数据库,真正数据是存储在hdfs中,元数据(表结构)存在derby[mysql]里,它会把HQL语句(类SQL)翻译成MapReduce(hive1.x),spark....(hive2.x),(hive2.x不提倡使用MapReduce,但还可以做测试)

    hive的查询效率取决于底层的计算引擎~

   hive应用场景:静态数据分析,数据不会频繁变化,不需要实时响应结果。

   hive的限制:不支持行级的处理(插入,删除),只能插入,删除一张表。不支持事物。

一、下载,解压

    注意下载bin(编译好的二进制),我下载成源代码了。。。

二、配置环境变量

vim /etc/profile

# 文件中添加

export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH=$PATH:$HIVE_HOME/bin

# 存盘退出后执行,使配置立马生效

source /etc/profile

检查配置是否生效:

echo $HIVE_HOME

# 若输出hive的安装目录,则说明配置生效

hive

# 若出现内容则说明path配置生效,没生效会提示找不到命令(报错是因为hive没有安装完,正常)

三、配置文件

cd /usr/local/src/hive/conf
cp hive-default.xml.template hive-site.xml

# 修改 为false,默认是true。(原因不明)
hive.metastore.schema.verification

#创建目录,用来替换${system:java.io.tmpdir} 注意有多处,都需要替换,见下图
mkdir /usr/local/src/hive/tmp

# 用当前登录用户替换${system:user.name},见下图

四、初始化hive内嵌的测试数据库derby

    正常生产环境中,hive的表结构和元数据是存储在MySQL、Oracle、postgresql等数据库中的,但是我们只是用hive做测试,则只需要初始化hive自带的测试数据库derby即可。命令如下(hive安装路径下执行)

# 如果MySQL,就把最后的数据库改为mysql
schematool -initSchema -dbType derby

# 注意此命令会在当前目录下创建metastore_db,所以每次执行命令一定要在同一路径下执行
# 之后,hive安装路径下会出现metastore_db文件夹(derby数据库)
# 如果hive出现什么错误,则可以把metastore_db文件夹删除,然后重新初始化

 

五、启动hive

hive

# 注意:需在之前启动hadoop集群,hive是依赖hadoop的

六、hive命令

hive> show databases;

# 使用默认数据库
hive> use default;

hive> show tables;

hive> create table wordcount (line string);

hive> desc wordcount;

# hive的临时文件
hive> dfs -ls /tmp/hive/root;

# hive的真实数据
hive> dfs -ls /user/hive/warehouse/wordcount;

七、example:统计wordcount

# 加载数据,hdfs的根目录下的input.txt文件,覆盖到hive表wordcount中
hive> load data inpath '/input.txt' overwrite into table wordcount;
# 注意:真正的数据并没有写入到hive中,而是与hdfs中的数据建立了一种映射,我们就可以通过表,去访问文件了

hive> select * from wordcount;

# 将line字段按空格分隔为数组
hive> select split(line, ' ') from wordcount;

# 将数组拆分为新的单独字段
hive> select explode(split(line, ' ')) as word from wordcount;

# 将上个命令的结果当成新表然后group by
hive> select word,count(1) from (select explode(split(line, ' ')) as word from wordcount)w group by word;
# HQL会把此命令翻译为MapReduce的job

八、案例:搜狗日志分析(热搜榜)

1、http://www.sogou.com/labs/resource/q.php 下载搜狗日志文件(min版)

2、日志文件格式化为1,2,3,6列用逗号分隔的sougou.dic文件

3、把sougou.dic文件放到hdfs中

[root@sunsk01 src]# hadoop fs -mkdir /sougou/
[root@sunsk01 src]# hadoop fs -put sougou.dic /sougou/

4、建表,映射到sougou.dic文件上

hive> create table sgr (qtime string, qid string, qword string, url string) row format delimited fields terminated by ',';
# 创建一张hive表,该行记录字段之间用逗号分隔。

hive> load data inpath '/sougou/' overwrite into table sgr;

# 检测映射是否成功
hive> select count(1) from sgr;

5、查询热搜榜

hive> select keyword,count(1) c from (select qword as keyword from sgr) kw group by keyword order by c desc limit 10;

# 结果:
# OK
# [汶川地震原因]	335
# [哄抢救灾物资]	308
# [封杀莎朗斯通]	110
# [印尼排华是怎么回事]	77
# [朝鲜能不能打败韩国]	60
# [杨丞琳辱华惨痛下场]	48
# [印尼残害女华人+图片]	47
# [xiao77]	34
# [gay]	31
# [97sese]	30
# Time taken: 66.374 seconds, Fetched: 10 row(s)

# emmm... 知道大家都在搜狗搜什么了。。。

 

www.htsjk.Com true http://www.htsjk.com/hive/41138.html NewsArticle hive 安装文档, 零、介绍     hive是 半个数据库, 真正数据是存储在hdfs中,元数据(表结构)存在derby[mysql]里,它会把HQL语句(类SQL)翻译成MapReduce(hive1.x),spark....(hive2.x),(hive2.x不提倡...
相关文章
    暂无相关文章
评论暂时关闭