Hive简单编程实践-词频统计

一、使用MapReduce的方式进行词频统计

(1)在HDFS用户目录下创建input文件夹

hdfs dfs -mkdir input  

注意:林子雨老师的博客(http://dblab.xmu.edu.cn/blog/1080-2/)中是在hadoop目录下创建input文件,而MapReduce读取的是HDFS目录中的文件,因此笔者认为该博客存在错误。

(2)在hadopp根目录中创建两个测试文件file1.txt和file2.txt,并将他们拷贝到HDFS中的input目录下

echo "hello world" > file1.txt
echo "hello hadoop" > file2.txt
hdfs dfs -put file1.txt file2.txt input/

知识点延伸:

echo " hello world"  >  file1.txt    # 表示创建file1.txt 
echo "nihao"   >> file1.txt     # 表示往file1.txt里追加内容
echo "" > file1.txt  # 表示清空file1.txt里的内容,但是文件中还存在空字符串
echo -n > file1.txt  # 清除文件的所有内容,包括空字符串
参考:https://linux.cn/article-8024-1.html

3)调用MapReduce程序对input文件夹中的文件进行词频统计

cd  /usr/local/hadoop  #切换到hadoop目录下
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount input output

注意:虽然输入目录是在hadoop目录下,但是自动生成的输出目录是在HDFS目录下的,如果HDFS目录下已存在output文件夹,就需要先删除,否则会出现下图所示的错误:

4)执行结果

二、使用Hive完成词频统计(7行代码搞定)

1.编写Hql代码

create table docs(line string); # 创建docs表并注明表里的数据类型是String
load data inpath 'input' overwrite into table docs;  # 向表中装载数据
create table word_count as  # 创建word_count表,将数据保存到该表
select word, count(1) as count from
(select explode(split(line,' '))as word from docs) w
group by word
order by word;

 

2.查询执行结果

select  *   from  word_count

猜你喜欢

转载自www.cnblogs.com/2sheep2simple/p/10663358.html