IDEA+MapReduce+Hive综合实践——搜狗日志查询分析
创始人
2024-01-28 02:29:20
0

1.下载数据源

打开搜狗实验室链接:搜狗搜索引擎 - 上网从搜狗开始,由于搜狗实验室链接打不开了,所有这里自己制作一份数据进行实验。

SogouQ.txt:

2.上传下载文件至HDFS

2.1将下载的文件通过FinalShell工具上传到Linux系统

2.2SogouQ.txt并上传到HDFS

可以用tail命令查看解压文件最后3行的数据

tail -3 SogouQ.txt

查询词为中文,这里编码按UTF-8查出来是乱码,编码时指定为‘GBK’可避免乱码。数据格式如前面的说明:

访问时间  用户ID  [查询词]  该URL在返回结果中的排名  用户点击的顺序号  用户点击的URL

上传至HDFS:

hdfs dfs -put SogouQ.txt /

3. 数据清洗

    因为原始数据中有些行的字段数不为6,且原始数据的字段分隔符不是Hive表规定的逗号',',所以需要对原始数据进行数据清洗。

   通过编写MapReduce程序完成数据清洗:(打包运行)

 (1)将不满足6个字段的行删除

 (2)将字段分隔符由不等的空格变为逗号‘,’分隔符

3.1 idea新建Maven工程:MRHiveLog

新建工程目录结构如下:

3.2 修改pom.xml文件

在一行之前添加如下语句

    org.apache.maven.pluginsmaven-shade-plugin3.1.0packageshadecom.wang.App

 添加依赖:在  一行之前添加如下语句:

  org.apache.hadoophadoop-common2.7.3org.apache.hadoophadoop-client2.7.3org.apache.hadoophadoop-hdfs2.7.3org.apache.hadoophadoop-mapreduce-client-core2.7.3

新建SogouMapper类:

package com.wang;import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;import java.io.IOException;//                                         k1   ,    v1,   k2   ,  v2
public class SogouMapper extends Mapper {@Override/*** 在任务开始时,被调用一次。且只会被调用一次。*/protected void setup(Context context) throws IOException, InterruptedException {super.setup(context);}@Overrideprotected void map(LongWritable k1, Text v1, Context context) throws IOException, InterruptedException {//避免乱码//数据格式:20111230000005  57375476989eea12893c0c3811607bcf 奇艺高清  1  1  http://www.qiyi.com/String data = new String(v1.getBytes(),0,v1.getLength(),"utf8");//split("\\s+") \\s+为正则表达式,意思是匹配一个或多个空白字符,包括空格、制表、换页符等。//参考:http://www.runoob.com/java/java-regular-expressions.htmlString words[] = data.split("\\s+");//判断数据如果不等于6个字段,则退出程序if(words.length != 6){return;//return语句后不带返回值,作用是退出该程序的运行  https://www.cnblogs.com/paomoopt/p/3746963.html}//用逗号代替空白字符String newData = data.replaceAll("\\s+",",");//输出context.write(new Text(newData),NullWritable.get());}@Override/*** 在任务结束时,被调用一次。且只会被调用一次。*/protected void cleanup(Context context) throws IOException, InterruptedException {super.cleanup(context);}
}

App.lava

package com.wang;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;/*** 数据清洗器 主类**/
public class App
{public static void main( String[] args ) throws Exception {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass(App.class);//指定map输出job.setMapperClass(SogouMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(NullWritable.class);//指定reduce的输出job.setOutputKeyClass(Text.class);job.setMapOutputValueClass(NullWritable.class);//指定输入、输出FileInputFormat.setInputPaths(job,new Path(args[0]));FileOutputFormat.setOutputPath(job,new Path(args[1]));//提交job,等待结束job.waitForCompletion(true);}
}

打包工程: 

上传到Linux: FinalShell工具:

运行jar包

 hadoop jar MRHiveLog-1.0-SNAPSHOT.jar /SogouQ.txt /oneday

 查看输出结果

hdfs dfs -ls /oneday

查看输出文件最后10行数据:

 hdfs dfs -tail /oneday/part-r-00000

创建hive表

 进入hive命令行

将MapReduce清洗后的数据导入Hive

load data inpath 'Oneday/part-r-00000' into table sogoulog_1;

使用SQL查询满足条件的数据(只显示前10条)

 select * from sogoulog_1 where no1=2  limit 10;

相关内容

热门资讯

新型中小投资项目 5个项目 新... 提起适合穷人的18个创业项目小投资的都有哪些,想必大家都有一定了解,有人问请问现在新型投资项目有哪些...
学生自主创业 学生自主创业 学... 以下是西安领军教育集团董事长吕鹏程在2012腾讯大秦网教育论坛主题演讲:学生自主创业不能说的秘密实录...
一个合适的创业合作伙伴很重要 ... 找到一个合适的创业合作伙伴那样的话,成功率就会大很多,可是要如何才能找到一个好的合作伙伴呢?下面由小...
学生自主创业项目 学生自主创业...   :保健面包房开一家面包店投资不大,对很多人来说是件容易的事。但用传统的烤制方式再加上传统的配料,...
深圳创业项目 深圳创业项目 深... 深圳市一个人杰地灵的地方,南方城市的标杆,很多年轻人都向往的城市,有挑战,更有机会,从数据上看深圳的...
农林致富好项目有哪些 这四个农... 农林致富好项目有哪些?现在大家都有一个思想,尤其是在农村不少人都想自己创业赚钱,因为毕竟在农村创业优...
代理小本创业新开店项目 代理小...   创业开店项目小本创业项目推荐:纺吧,休闲娱乐的新时尚1在城市繁华居民区里或在游乐休闲集聚地租一套...
浙江福建等地积极应对台风“丹娜...   央视网消息(新闻联播):7月7日,中央气象台发布台风蓝色预警。浙江、福建等地加强防范,积极应对将...
怎么创业 怎么创业 怎么创业呢... 一无所有的人怎么创业?分类:创业故事|如何创业|Word文档下载一无所有的人怎么创业?创业,先从认识...
你们是怎么创业的? 你们是怎么... 女朋友在毕业后的第1年内因为忍受不了事业单位的不良风气决定离职。同年,我因为忍受不了所任职私企的不良...