首页 文章 精选 留言 我的

精选列表

搜索[虚幻引擎],共10000篇文章
优秀的个人博客,低调大师

Splunk——大数据处理的实时引擎

大数据已经成为影响各行各业的热词,鉴于中国庞大的用户基础,对中国企业而言,大数据的影响也更为深刻。 2013年8月6日,Splunk公司在北京举办了探讨大数据如何落地的研讨会,分享了大数据给各个领域带来的变革、大数据技术在中国落地的前沿观点以及Splunk大数据方案的实施案例。 “数据正以几何的速度在增长,其中最复杂的也最有价值的数据细分市场是机器数据,所有这些像服务器、安全装置、传感器等基础架构产生的数据都是机器数据,这些机器数据记录了方方面面的行为。”Splunk产品营销副总裁Sanjay Mehta说道。Splunk所定义的机器数据,包括了文件或者文件目录、syslog、Windows事件日志、Windows注册表、Windows性能指标、Unix/Linux日志和指标、文件完整性监视、配置文件、OPSEC LEA、Cisco设

优秀的个人博客,低调大师

【Spark Summit East 2017】Spark化数据引擎

更多精彩内容参见云栖社区大数据频道https://yq.aliyun.com/big-data;此外,通过Maxcompute及其配套产品,低廉的大数据分析仅需几步,详情访问https://www.aliyun.com/product/odps。 本讲义出自Rohan Sharma在Spark Summit East 2017上的演讲,主要介绍了Netflix的大数据处理生态系统以及Spark在该平台发挥的作用,并讨论了Netflix使用的数据流以及数据管道架构以及Spark如何帮助Netflix在数据处理过程中提升效率,最后还分享了一些关于使用Spark的数据仓库以及分析案例。

优秀的个人博客,低调大师

搜索引擎:MapReduce实战----倒排索引

1.倒排索引简介 倒排索引(Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。 有两种不同的反向索引形式: 一条记录的水平反向索引(或者反向档案索引)包含每个引用单词的文档的列表。 一个单词的水平反向索引(或者完全反向索引)又包含每个单词在一个文档中的位置。 后者的形式提供了更多的兼容性(比如短语搜索),但是需要更多的时间和空间来创建。 举例: 以英文为例,下面是要被索引的文本: T0= "it is what it is" T1= "what is it" T2= "it is a banana" 我们就能得到下面的反向文件索引: 1 2 3 4 5 "a": {2} "banana": {2} "is": {0, 1, 2} "it": {0, 1, 2} "what": {0, 1} 检索的条件"what","is"和"it"将对应这个集合:{0,1}∩{0,1,2}∩{0,1,2}={0,1}。 对相同的文字,我们得到后面这些完全反向索引,有文档数量和当前查询的单词结果组成的的成对数据。 同样,文档数量和当前查询的单词结果都从零开始。 所以,"banana": {(2, 3)}就是说 “banana”在第三个文档里 (T2),而且在第三个文档的位置是第四个单词(地址为 3)。 1 2 3 4 5 "a": {(2, 2)} "banana": {(2, 3)} "is": {(0, 1), (0, 4), (1, 1), (2, 1)} "it": {(0, 0), (0, 3), (1, 2), (2, 0)} "what": {(0, 2), (1, 0)} 如果我们执行短语搜索"what is it"我们得到这个短语的全部单词各自的结果所在文档为文档0和文档1。但是这个短语检索的连续的条件仅仅在文档1得到。 2.分析和设计 (1)Map过程 首先使用默认的TextInputFormat类对输入文件进行处理,得到文本中每行的偏移量及其内容,Map过程首先必须分析输入的<key, value>对,得到倒排索引中需要的三个信息:单词、文档URI和词频,如图所示: 存在两个问题,第一:<key, value>对只能有两个值,在不使用Hadoop自定义数据类型的情况下,需要根据情况将其中的两个值合并成一个值,作为value或key值; 第二,通过一个Reduce过程无法同时完成词频统计和生成文档列表,所以必须增加一个Combine过程完成词频统计 public static class Map extends Mapper<Object,Text,Text,Text>{ private Text keyInfo = new Text(); private Text valueInfo = new Text(); private FileSplit split; //存储所在文件的路径 public void map(Object key,Text value,Context context) throws IOException, InterruptedException{ split = (FileSplit)context.getInputSplit(); //获取当前任务分割的单词所在的文件路径 StringTokenizer itr = new StringTokenizer(value.toString()); while(itr.hasMoreTokens()){ keyInfo.set(itr.nextToken()+"+"+split.getPath().toString()); //keyvalue是由单词和URI组成的 valueInfo.set("1"); //value值设置成1 context.write(keyInfo,valueInfo); } } } (2)Combine过程 将key值相同的value值累加,得到一个单词在文档中的词频,如图 public static class Combiner extends Reducer<Text,Text,Text,Text>{ private Text info = new Text(); public void reduce(Text key,Iterable<Text>values,Context context) throws IOException, InterruptedException{ int sum = 0; for(Text value:values){ sum += Integer.parseInt(value.toString()); } // int index = key.toString().indexOf("+"); // info.set(key.toString().substring(index+1)+":"+sum); // key.set(key.toString().substring(0,index)); String record = key.toString(); String[] str = record.split("[+]"); info.set(str[1]+":"+sum); key.set(str[0]); context.write(key,info); } } (3)Reduce过程 讲过上述两个过程后,Reduce过程只需将相同key值的value值组合成倒排索引文件所需的格式即可,剩下的事情就可以直接交给MapReduce框架进行处理了 public static class Reduce extends Reducer<Text,Text,Text,Text>{ private Text result = new Text(); public void reduce(Text key,Iterable<Text>values,Context context) throws IOException, InterruptedException{ String value =new String(); for(Text value1:values){ value += value1.toString()+" ; "; } result.set(value); context.write(key,result); } } 完整代码如下: package ReverseIndex; import java.io.*; import java.util.StringTokenizer; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.*; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.FileSplit; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class ReverseIndex { public static class Map extends Mapper<Object,Text,Text,Text>{ private Text keyInfo = new Text(); private Text valueInfo = new Text(); private FileSplit split; //存储所在文件的路径 public void map(Object key,Text value,Context context) throws IOException, InterruptedException{ split = (FileSplit)context.getInputSplit(); //获取当前任务分割的单词所在的文件路径 StringTokenizer itr = new StringTokenizer(value.toString()); while(itr.hasMoreTokens()){ keyInfo.set(itr.nextToken()+"+"+split.getPath().toString()); //keyvalue是由单词和URI组成的 valueInfo.set("1"); //value值设置成1 context.write(keyInfo,valueInfo); } } } public static class Combiner extends Reducer<Text,Text,Text,Text>{ private Text info = new Text(); public void reduce(Text key,Iterable<Text>values,Context context) throws IOException, InterruptedException{ int sum = 0; for(Text value:values){ sum += Integer.parseInt(value.toString()); } //下面三行注释和紧接着四行功能一样,只不过实现方法不一样罢了 // int index = key.toString().indexOf("+"); // info.set(key.toString().substring(index+1)+":"+sum); // key.set(key.toString().substring(0,index)); //对传进来的key进行拆分,以+为界 String record = key.toString(); String[] str = record.split("[+]"); info.set(str[1]+":"+sum); key.set(str[0]); context.write(key,info); } } public static class Reduce extends Reducer<Text,Text,Text,Text>{ private Text result = new Text(); public void reduce(Text key,Iterable<Text>values,Context context) throws IOException, InterruptedException{ String value =new String(); for(Text value1:values){ value += value1.toString()+" ; "; } result.set(value); context.write(key,result); } } public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { // TODO Auto-generated method stub Job job = new Job(); job.setJarByClass(ReverseIndex.class); job.setNumReduceTasks(1); //设置reduce的任务数量为1,平常的小测试不需要开辟太多的reduce任务进程 job.setMapperClass(Map.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(Text.class); job.setCombinerClass(Combiner.class); job.setReducerClass(Reduce.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); FileInputFormat.addInputPath(job, new Path("/thinkgamer/input")); FileOutputFormat.setOutputPath(job, new Path("/thinkgamer/output")); System.exit(job.waitForCompletion(true) ? 0 : 1); } }

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册