摘要: 在Java规范中,它对equals()方法的使用必须要遵循如下几个规则:equals 方法在非空对象引用上实现相等关系: 1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。 2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。 3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。 4、一致性:对于任何非空引用值 x 和 y,多次调用 x... 阅读全文
posted @ 2014-01-24 15:24 liutoutou 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 对于 JOIN 操作:Map:以 JOIN ON 条件中的列作为 Key,如果有多个列,则 Key 是这些列的组合以 JOIN 之后所关心的列作为 Value,当有多个列时,Value 是这些列的组合。在 Value 中还会包含表的 Tag 信息,用于标明此 Value 对应于哪个表。按照 Key 进行排序。Shuffle:根据 Key 的值进行 Hash,并将 Key/Value 对按照 Hash 值推至不同对 Reduce 中。Reduce:Reducer 根据 Key 值进行 Join 操作,并且通过 Tag 来识别不同的表中的数据。对于Group by操作:Map:以 Group by 阅读全文
posted @ 2014-01-23 16:59 liutoutou 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 一、抽象 在使用抽象类时需要注意几点: 1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。 2、抽象方法必须由子类来进行重写。 3、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。 4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。 5、子类中的抽象方法不能与父类的抽象方法同名。 6、abstract不能与final并列修饰同一个类。 7、abstract 不能与private、static、final或native并列修饰同一个方法。二、接口在使用接口过程中需要注意如下几个问题: 1、Interface的所有方法访问 阅读全文
posted @ 2014-01-23 14:22 liutoutou 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 接下来几天会根据http://www.cnblogs.com/chenssy/category/525010.html中讲解的java内容做个学习笔记,在此感谢一下这位大仙!!一、封装对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。 使用封装有三大好处: 1、良好的封装能够减少耦合。 2、类内部的结构可以自由修改。 3、可以对成员进行更精确的控制。 4、隐藏信息,实现细节。二、继承继承定义了类如何相互关联,共享特性。对于若干个相同或者相识的类,我们可以抽象出他们共有的行为或者属相并将其定义成一个父类或者超类,然后用这些类继承该父类,他们不.. 阅读全文
posted @ 2014-01-23 13:58 liutoutou 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 一、理论HIVE中都是按等值连接来统计的,理论上两种写法统计结果应该是一致的;二、实际情况但实际使用中发现两种写法会返回的结果,总会有一些差距虽然差别不大,但让人很是困惑。三、原因当使用join on的时候,如果右表有重复数据就会关联更多的数据,因为它们都符合join on上的条件;而使用left semi join的时候,当join左侧表中的记录在join右侧表上查询到符合条件的记录就会返回,而不会再继续查找右侧表中剩余记录了,所以即使右侧表中有重复,也不会对统计结果有啥影响。 阅读全文
posted @ 2014-01-22 11:31 liutoutou 阅读(1491) 评论(0) 推荐(0) 编辑
摘要: Order by:order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。在hive.mapred.mode=strict模式下,强制必须添加limit限制,这么做的目的是减少reducer数据规模Sort by:sort by不是全局排序,其在数据进入reducer前完成排序。因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1, 则sort by只保证每个reducer的输出有序,不保证全局有序。Distribute by:根据distr 阅读全文
posted @ 2014-01-22 11:12 liutoutou 阅读(513) 评论(0) 推荐(0) 编辑
摘要: 1、采用两个MapReduce运算串联来实现Pik= Mij*Njk第一步:Map函数:将每个矩阵运算mij传给键值对(j,(M,i,mij)),将每个矩阵元素njk传给键值对(j,(N,k,njk))Reduce函数:对每个键j,检查与之关联的值的列表。对每个来自M的值(M,i,mij)和来自N的值(N,k,njk),产生元组(i,k,mijnjk)。对于键j,Reduce函数输出满足(i,k,mijnjk)形式的所有元组列表作为值第二步:Map函数:将上面的Reduce函数的输出结果传递给改Map函数,形式为(j,[(i1,k1,v1),(i2,k2,v2),...(ip,kp,vp)]) 阅读全文
posted @ 2013-12-31 11:03 liutoutou 阅读(708) 评论(0) 推荐(0) 编辑
摘要: 1、自然连接Map函数:对于R中的每个元组(a,b),生成键值对(b,(R,a)),对于S中的每个元组(b,c),生成键值对(b,(S,c))Reduce函数:每个键值b会与一系列对相关联,这些对要么来自R,要么来自S。基于R和S构建所有对。键b对应的输出结果为(b,[(a1,b,c1),(a2,b,c2)])即与b关联的元组列表由来自R和S中的具有共同b值的元组组合而成2、分组和聚合运算Map函数:对每个元组(a,b,c),生成键值对(a,b)Reduce函数:每个键a代表一个分组,即对与键a关联的字段B的值表为[b1,b2,...,bn]做聚合操作,输出(a,x)对,x是聚合的结果如果存在 阅读全文
posted @ 2013-12-30 16:47 liutoutou 阅读(659) 评论(0) 推荐(0) 编辑
摘要: 1、选择运算Map函数:对R中的每个元组t,检测它是否满足条件C,如果满足,则产生一个键值对(t,t)Reduce函数:直接将每个键值对传递到输出即可2、投影运算Map函数:对R中的每个元组t,剔除t中属性不在S中的字段得到元组t',输出键值对(t',t')Reduce函数:对任意Map任务产生的每个键t',将存在一个或多个键值对(t',t'),Reduce函数将(t',[t',t'...t'])转换成(t',t'),以保证键t'只产生一个(t',t')对3、并运算Map函数 阅读全文
posted @ 2013-12-30 16:26 liutoutou 阅读(1348) 评论(0) 推荐(0) 编辑
摘要: 1 # -*- coding: utf-8 -*- 2 import string 3 import urllib2 4 import re 5 from BeautifulSoup import BeautifulSoup 6 7 class Baidu_Spider: 8 def __init__(self,url): 9 self.myUrl=url;10 11 # 初始化加载页面并将其转码储存 12 def baidu_tieba(self,page):13 self.myUrl=self.... 阅读全文
posted @ 2013-12-26 16:23 liutoutou 阅读(137) 评论(0) 推荐(0) 编辑