Apache Hive

Stella981
• 阅读 736

点击上方蓝字关注我们

Apache Hive

本文将详细介绍 Hive 使用 hql 语句对 WordCount 的实现

Apache Hive

一、环境准备

我这里搭建的是高可用的完全分布式集群,至于如何搭建我就不多说了,有时间我整理下各个框架的分布式集群搭建文档送给大家。

Apache Hive

1.启动 Zookeeper 集群:zkServer.sh start

2.启动HDFS集群:start-dfs.sh

如果 NameNode 没有启动,需要手动启动:hadoop-daemon.sh start namenode

3.启动 Yarn 集群:start-yarn.sh (启动nodemanager)、yarn-daemon.sh start resourcemanager(手动启动 resourcemanager)

4.查看启动情况:jps

图5-4 jps进程查看

5.启动Hive集群

(1)node1 启动mysql:service mysqld start

(2)node3(hive服务端)启动元数据服务

ss -nal 看一下目前的端口号使用情况

hive --service metastore 启动元数据服务

(3)这个时候再开一个shell窗口:ss -nal看一下有没有9083的端口

有的话在客户端输入hive回车就可以启动hive终端了

数据文件上传至 HDFS

words.txt

[root@node4 ~]# vim words.txt

hadoop hive mapreducehive hbasehbase hive mapreduce hadoophive hadoop hello

上传至HDFS

[root@node4 ~]# hdfs dfs -put words.txt /demo_data/[root@node4 ~]# hdfs dfs -ls /demo_dataFound 1 items-rw-r--r--   2 root supergroup         79 2020-07-14 10:04 /demo_data/words.txt

Hive表设计

words表

这里建外部表比较合适,hql 语句很简单,如下

create external table words(line string)location '/demo_data/'

执行

hive> create external table words    > (    > line string    > )    > location '/demo_data/';OKTime taken: 0.173 secondshive> select * from words;OKhadoop hive mapreducehive hbasehbase hive mapreduce hadoophive hadoop helloTime taken: 0.096 seconds, Fetched: 4 row(s)

words_result表

一会儿hive处理的结果存放在一个内部表里比较合适

先把它建出来,语句如下

create table words_result(word string,ct int);

hive> create table words_result    > (    > word string,    > ct int    > );OKTime taken: 0.189 seconds

实现WordCount

1.以空格为单位切割单词

hive> select split(line,' ') from words;OK["hadoop","hive","mapreduce"]["hive","hbase"]["hbase","hive","mapreduce","hadoop"]["hive","hadoop","hello"]Time taken: 0.123 seconds, Fetched: 4 row(s)

2.用内置表生成函数(UDTF)里的explode函数把上面结果变为一列

hive> select explode(split(line,' ')) from words;OKhadoophivemapreducehivehbasehbasehivemapreducehadoophivehadoophelloTime taken: 0.111 seconds, Fetched: 12 row(s)

3.完整的 hql 语句

from (select explode(split(line,' ')) word from words) tinsert into words_resultselect word,count(word)group by word;

注意:不管是SQL还是hql,count()括号里面最好不要用星号,建议使用字段或者随便一个数字,因为星号会增加查询负重

执行

Apache Hive

结果达到预期,Over!

Apache Hive

Apache Hive

长按二维码关注我们

  Apache Hive

大数据编程

微信号 : bigdataBC

专注技术分享!

在看”的永远18岁~

Apache Hive

本文分享自微信公众号 - 大数据编程(bigdataBC)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Stella981 Stella981
3年前
Spring Boot如何利用AOP巧妙记录操作日志?
!(https://oscimg.oschina.net/oscnet/7f1d6247ad65413fbca3b77b0bb9433c.png)点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/3f5a1c2360f9430c93a00b4715527ed9.jpg)本篇
Stella981 Stella981
3年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
可莉 可莉
3年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这