11 2016 档案
摘要:Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software
阅读全文
摘要:转自:http://www.cnblogs.com/yjf512/p/4897294.html match 最简单的一个match例子: 查询和"我的宝马多少马力"这个查询语句匹配的文档。 上面的查询匹配就会进行分词,比如"宝马多少马力"会被分词为"宝马 多少 马力", 所有有关"宝马 多少 马力"
阅读全文
摘要:Javascript的this用法 转自:http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内
阅读全文
摘要:最终效果: 来自:http://lodashjs.com/docs/#_partialfunc-partials 除非你已经使用过其他的函数式编程,不然你可能对下面这两个概念很陌生:“偏函数应用”和“函数柯里化“。 话虽如此,但是假如你一旦理解了这两个概念,你就完全可以在自己的代码里使用他们。 Fu
阅读全文
摘要:概述 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。 语法 参数 描述 Promise 对象是一个返回值的代理,这个返回值在promise对象创建时未必已知。它允许你为异步操作的成功返回值或失败信息指定处理方法。 这使得异步方法可以像同步方法那
阅读全文
摘要:转自:http://www.ruanyifeng.com/blog/2014/10/event-loop.html 五、定时器 除了放置异步任务的事件,"任务队列"还可以放置定时事件,即指定某些代码在多少时间之后执行。这叫做"定时器"(timer)功能,也就是定时执行的代码。 定时器功能主要由set
阅读全文
摘要:转自: http://www.ruanyifeng.com/blog/2014/10/event-loop.html 一、为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。作为浏览器脚本语言,JavaScript的主要用途是与用户互
阅读全文
摘要:$digest和$apply 在Angular中,有$apply和$digest两个函数,我们刚才是通过$digest来让这个数据应用到界面上。但这个时候,也可以不用$digest,而是使用$apply,效果是一样的,那么,它们的差异是什么呢? 最直接的差异是,$apply可以带参数,它可以接受一个
阅读全文
摘要:Angular什么时候不会自动为我们$apply呢? 这是Angular新手共同的痛处。为什么我的jQuery不会更新我绑定的东西呢?因为jQuery没有调用$apply,事件没有进入angular context,$digest循环永远没有执行。 我们来看一个有趣的例子: 假设我们有下面这个dir
阅读全文
摘要:转自:http://www.angularjs.cn/A0a6 Angular用户都想知道数据绑定是怎么实现的。你可能会看到各种各样的词汇:$watch,$apply,$digest,dirty-checking... 它们是什么?它们是如何工作的呢?让我们从头开始吧。 浏览器事件循环和Angula
阅读全文
摘要:spark-2.0.0-bin-hadoop2.6/bin/spark-shell --jars elasticsearch-hadoop-5.0.1/dist/elasticsearch-spark-20_2.11-5.0.1.jar 注意版本对应关系! 可以看到ES请求data/test/3中i
阅读全文
摘要:转自:http://www.lovelucy.info/understanding-scopes-in-angularjs.html angularjs 中的scope继承关系 ng-include 假设在我们的 controller 中, $scope.myPrimitive = 50; $sco
阅读全文
摘要:转自:http://www.lovelucy.info/understanding-scopes-in-angularjs.html JavaScript 的原型链继承 假设父类 parentScope 有如下成员属性 aString, aNumber, anArray, anObject, 以及
阅读全文
摘要:比如我们现在有这样一个文件,data.json: 它的第一行定义了_index,_type,_id等信息;第二行定义了字段的信息。 然后执行命令:
阅读全文
摘要:http://www.cnblogs.com/bonelee/p/6078947.html 里分析了ES bulk实现,其中路由代码: ShardId shardId = clusterService.operationRouting().indexShards(clusterState, conc
阅读全文
摘要:对bulk request的处理流程: 1、遍历所有的request,对其做一些加工,主要包括:获取routing(如果mapping里有的话)、指定的timestamp(如果没有带timestamp会使用当前时间),如果没有指定id字段,在action.bulk.action.allow_id_g
阅读全文
摘要:对bulk request的处理流程: 1、遍历所有的request,对其做一些加工,主要包括:获取routing(如果mapping里有的话)、指定的timestamp(如果没有带timestamp会使用当前时间),如果没有指定id字段,在action.bulk.action.allow_id_g
阅读全文
摘要:http://www.jianshu.com/p/cccc56e39429/comments/2022782 和 https://github.com/elastic/elasticsearch-hadoop/issues/745 都有提到通过自定义Spark Partitioner提升es-had
阅读全文
摘要:channel是golang中很重要的概念,配合goroutine是golang能够方便实现并发编程的关键。channel其实就是传统语言的阻塞消息队列,可以用来做不同goroutine之间的消息传递,由于goroutine是轻量级的线程能够在语言层面调度,所以channel在golang中也常被用
阅读全文
摘要:对Java程序员来说,我们对面向对象的编程(OOP)自然都是烂熟于胸的,但语言也极大地影响了我们构建面向对象应用程序的方式。(现在的OOP已经和Alan Kay当初创造这个词时候的初衷大不相同了,他的主要思想是采用消息传递并消灭所有状态数据(他认为,系统是由一些类似于生物细胞那样的对象构成的,这些对
阅读全文
摘要:elasticsearch 自定义ID: 启动本地es,然后写入数据,data2.json: 通过批量插入上述数据: 可以看到新生成的文档_id为uuid的数值!
阅读全文
摘要:有时自己的业务需要自己实现spark的分区函数 以下代码是实现一个自定义spark分区的demo 实现的功能是根据key值的最后一位数字,写到不同的文件 例如: 10写入到part-00000 11写入到part-00001 . . . 19写入到part-00009 自定义分区:
阅读全文
摘要:路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上。Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是随机的,因为我们将来要检索文档。事实上,它根据一个简单的算法决定: routing值是一个任意字符串
阅读全文
摘要:spark streaming 入门例子: spark shell 然后运行bash脚本,在tmp里写入数据,文件名随机: 结果为:
阅读全文
摘要:ElasticSearch-hadoop saveToEs源码分析: 类的调用路径关系为: 他们的作用: EsSpark,读取ES和存储ES的入口 EsRDDWriter,调用RestService创建PartitionWriter,对ES进行数据写入 RestService,负责创建 RestRe
阅读全文
摘要:资源参数调优 了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理解了。所谓的Spark资源参数调优,其实主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使用的效率,从而提升Spark作业的执行性能。以下参数就是Spark中主要的资源参数,每个参数都对应着
阅读全文
摘要:调优概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利
阅读全文
摘要:RDD底层实现原理 RDD是一个分布式数据集,顾名思义,其数据应该分部存储于多台机器上。事实上,每个RDD的数据都以Block的形式存储于多台机器上,下图是Spark的RDD存储架构图,其中每个Executor会启动一个BlockManagerSlave,并管理一部分Block;而Block的元数据
阅读全文
摘要:注意:此文的stage划分有错,stage的划分是以shuffle操作作为边界的,可以参考《spark大数据处理技术》第四章page rank例子! 参考:http://litaotao.github.io/deep-into-spark-exection-model 我们用一个例子来说明,结合例子
阅读全文
摘要:Driver的任务提交过程 1、Driver程序的代码运行到action操作,触发了SparkContext的runJob方法。2、SparkContext调用DAGScheduler的runJob函数。3、DAGScheduler把Job划分stage,然后把stage转化为相应的Tasks,把T
阅读全文
摘要:在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。Spark作为MapReduce框架的一种实现,自然也实现了shuffle的逻辑。 Shuffle
阅读全文
摘要:RDD操作闭包外部变量原则 RDD相关操作都需要传入自定义闭包函数(closure),如果这个函数需要访问外部变量,那么需要遵循一定的规则,否则会抛出运行时异常。闭包函数传入到节点时,需要经过下面的步骤: 注意:外部变量在闭包内的修改不会被反馈到驱动程序。 简而言之,就是通过网络,传递函数,然后执行
阅读全文
摘要:Accumulator简介 Accumulator是spark提供的累加器,顾名思义,该变量只能够增加。 只有driver能获取到Accumulator的值(使用value方法),Task只能对其做增加操作(使用 +=)。你也可以在为Accumulator命名(不支持Python),这样就会在spa
阅读全文
摘要:通过spark的action操作函数:collect函数可以提取出所有rdd里的数据项!
阅读全文
摘要:spark dirver本质是一个spark集群的驱动程序,你要调用spark集群的计算功能,必须要通过它! 然后,在tmp下放置一个文件tmp.txt,运行: ./bin/spark-submit my_example/test.py 即可看到效果! 注意:从根本上说,spark sumbit也是
阅读全文
摘要:在Ubuntu下,安装ipython很简单: $sudo apt-get install ipython 在bash env中添加变量: 再次使用,已经是ipython了!
阅读全文
摘要:采用快排思路来做,上面的输出: 注意:k个元素未必是有序的!
阅读全文
摘要:发现自己写起来很不顺手,得从最右边找出pivot元素是最方便的! 以最左边的元素作为pivot的代码,看到好多坑: 输出: partition有三种思路写法:
阅读全文