[原创]Apache Pig中文教程集合
2012年3月24日 由 learnhard 2 条评论 »转载必须注明出处:http://www.codelast.com/
Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。
我根据自己在工作中的学习和总结,写了如下一些Apache Pig中文教程,供大家参考。
文章来源:http://www.codelast.com/
(1)《Apache Pig的一些基础概念及用法总结(1)》
(2)《Apache Pig的一些基础概念及用法总结(2)》
(3)《Apache Pig中文教程(进阶)》
(4)《使用Apache Pig时应该注意/避免的操作或事项》
» 阅读更多: [原创]Apache Pig中文教程集合
[原创]摄像头娘来了
2012年1月28日 由 learnhard 3 条评论 »转载须注明出处:codelast.com
被标题吸引进来的各位,抱歉,这还是一篇技术文章![]()
本文的主角是一个摄像头及其配套程序,我毫无创意地模仿网上的流行说法,称之为“摄像头娘”。她会自己发微博,记得follow她哦:t.qq.com/cameragirl
前段时间浙大有个博士做了个“饮水机娘”,也就是他实验室里的饮水机没水或者水加热开了的时候,都会自动发一条微博。这个与“物联网”扯上了关系的东西,让我原来以为那位博士是改造了饮水机,加上了温度及水位传感器,配合单片机,将饮水机的状态采集到PC中去,再写一个PC上的软件将触发的事件发送到微博上,后来看了相关的介绍,才知道没那么复杂,其实他没有改造饮水机,而是用一个摄像头对准饮水机的状态指示灯,根据指示灯的情况,来判断饮水机的状态。
于是我也就萌生了做一个“摄像头娘”的念头。
我构想中的“摄像头娘”是这样的:当有物体在她面前运动的时候,她能感受得到,并且会为这个过客拍一张照片,然后发到微博上。
下面是实际效果截图:
» 阅读更多: [原创]摄像头娘来了
[原创]拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
2011年6月15日 由 learnhard 2 条评论 »转载须注明出处:http://www.codelast.com/
在最优化领域,有几个你绝对不能忽略的关键词:拟牛顿、DFP、BFGS。名字很怪,但是非常著名。下面会依次地说明它们分别“是什么”,“有什么用” 以及 “怎么来的”。
但是在进入正文之前,还是要先提到一个概念上的区别,否则将影响大家的理解:其实DFP算法、BFGS算法都属于拟牛顿法,即,DFP、BFGS都分别是一种拟牛顿法。
» 阅读更多: [原创]拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
[原创]最速下降法/steepest descent,牛顿法/newton,共轭方向法/conjugate direction,共轭梯度法/conjugate gradient 及其他
2011年5月30日 由 learnhard 1条评论 »转载须注明出处:http://www.codelast.com/
在最优化的领域中,这“法”那“法”无穷多,而且还“长得像”——名字相似的多,有时让人觉得很迷惑。
在自变量为一维的情况下,也就是自变量可以视为一个标量,此时,一个实数就可以代表它了,这个时候,如果要改变自变量的值,则其要么减小,要么增加,也就是“非左即右“,所以,说到“自变量在某个方向上移动”这个概念的时候,它并不是十分明显;而在自变量为n(n≥2)维的情况下,这个概念就有用了起来:假设自变量X为3维的,即每一个X是(x1, x2, x3)这样的一个点,其中x1,x2和x3分别是一个实数,即标量。那么,如果要改变X,即将一个点移动到另一个点,你怎么移动?可以选择的方法太多了,例如,我们可以令x1,x2不变,仅使x3改变,也可以令x1,x3不变,仅使x2改变,等等。这些做法也就使得我们有了”方向“的概念,因为在3维空间中,一个点移动到另一个点,并不是像一维情况下那样“非左即右”的,而是有“方向”的。在这样的情况下,找到一个合适的”方向“,使得从一个点移动到另一个点的时候,函数值的改变最符合我们预定的要求(例如,函数值要减小到什么程度),就变得十分有必要了。
» 阅读更多: [原创]最速下降法/steepest descent,牛顿法/newton,共轭方向法/conjugate direction,共轭梯度法/conjugate gradient 及其他
[原创]LM算法的实现
2010年9月14日 由 learnhard 2 条评论 »转载需注明出处:http://www.codelast.com,并保持文章的完整性。
LM算法,全称为Levenberg-Marquard,它可用于解决非线性最小二乘问题,多用于曲线拟合等场合。
LM算法的实现并不算难,它的关键是用模型函数 f 对待估参数向量p在其领域内做线性近似,忽略掉二阶以上的导数项,从而转化为线性最小二乘问题,它具有收敛速度快等优点。LM算法属于一种“信赖域法”——所谓的信赖域法,此处稍微解释一下:在最优化算法中,都是要求一个函数的极小值,每一步迭代中,都要求目标函数值是下降的,而信赖域法,顾名思义,就是从初始点开始,先假设一个可以信赖的最大位移s,然后在以当前点为中心,以s为半径的区域内,通过寻找目标函数的一个近似函数(二次的)的最优点,来求解得到真正的位移。在得到了位移之后,再计算目标函数值,如果其使目标函数值的下降满足了一定条件,那么就说明这个位移是可靠的,则继续按此规则迭代计算下去;如果其不能使目标函数值的下降满足一定的条件,则应减小信赖域的范围,再重新求解。
事实上,你从所有可以找到的资料里看到的LM算法的说明,都可以找到类似于“如果目标函数值增大,则调整某系数再继续求解;如果目标函数值减小,则调整某系数再继续求解”的迭代过程,这种过程与上面所说的信赖域法是非常相似的,所以说LM算法是一种信赖域法。
[原创] Powell算法(Powell Algorithm)的实现
2010年9月19日 由 learnhard 4 条评论 »本文面向的读者:希望用C/C++编程解决非线性最优化问题的人。
转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/
实现Powell算法的基础之一:你需要至少先掌握一种一维极值搜索算法。比较流行的是Golden Ratio Search(黄金比例搜索法),Fibonacci Search(斐波纳契搜索法),等等。
[原创] 黄金比例搜索算法(Golden Ratio Search Algorithm)的实现
2010年9月19日 由 learnhard 1条评论 »转载请注明出处:http://www.codelast.com/
黄金比例搜索算法 / Golden Ratio Search Algorithm 可以用在Powell算法中的一个步骤——一维极值搜索中。由于我写了一篇Powell算法实现的文章(一部分,尚未完成),所以在此详述golden ratio search的实现。
要使用golden ration search来对函数f(x)进行极值搜索,函数f(x)需要在某一区间内满足单峰(unimodal)条件。那么什么是单峰呢?
<定义> 如果函数f(x)在区间 I = [a,b]上,存在一个点p∈I,并且:
[原创]最小二乘的理论依据
2010年10月8日 由 learnhard 没有评论 »转载请注明出处:本文来自:http://www.codelast.com/
在做数据建模或者曲线拟合的时候,我们通常会用到最小二乘法。假设作为数学模型的函数为
,其中S为参数集向量(即一系列的参数),x为自变量。在这种情况下,为了求出S,需要对下式进行极小化:
» 阅读更多: [原创]最小二乘的理论依据
[原创]选主元的高斯-约当(Gauss-Jordan)消元法解线性方程组/求逆矩阵
2011年3月13日 由 learnhard 9 条评论 »转载请注明出处:本文来自learnhard的博客:http://www.codelast.com/ & http://blog.csdn.net/learnhard/
选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵、解线性方程组(插一句:LM算法求解的一个步骤),等等。它的速度不是最快的,但是它非常稳定(来自网上的定义:一个计算方法,如果在使用此方法的计算过程中,舍入误差得到控制,对计算结果影响较小,称此方法为数值稳定的),同时它的求解过程也比较清晰明了,因而人们使用较多。下面我就用一个例子来告诉你Gauss-Jordan法的求解过程吧。顺便再提及一些注意事项以及扩展话题。
对本文中所提到的“主元”等概念的解释,可以参考此链接。
[原创]Ridders求导算法
2011年3月31日 由 learnhard 没有评论 »N年前,当我还是一个在校学生的时候,有一次到工厂里实习,看到某系统上运行的一个软件中显示的一条条曲线,以及其下的一些参数值,我问旁边开发那款软件的老师:某某值是怎么求出来的?老师说,是对曲线求导算出来的。当时我就心想,一个人开发出这款软件得综合多少个领域的知识才能做得到啊。从那时起,我的心中就埋下了一颗种子。时光匆匆,一眨眼就到了今天,因为学习其他算法的原因,涉及到了一些求导算法的编程,于是,本文必须得写。
另外,为写本文,我花费了大量时间与精力,请注意下面的声明:
转载必须注明出处:本文来自:http://www.codelast.com/
求导算法应用广泛,例如,在LM算法中,需要对函数求导(但是,使用数值求导的方法来求导数值,会不会对LM算法的整个过程的效率造成较大影响,我不清楚,还没有试验),可以考虑使用数值求导算法来实现。
» 阅读更多: [原创]Ridders求导算法
[原创]关于 最优化/Optimization 的一些概念解释
2010年10月20日 由 learnhard 没有评论 »转载请注明出处:本文来自learnhard的网站:http://www.codelast.com/
以下是我曾在学习“最优化”理论与实践中遇到的一些概念,我刚开始学的时候,有些东西看了很多遍都还觉得很别扭、晦涩难懂,在比较清楚地理解了之后,我打算把它们写下来,并试图以很通俗、但可能不十分严谨的方式解释、呈现出来,以使一部分正在这些概念中挣扎的人能有所解脱。
[原创]Apache Pig的一些基础概念及用法总结(2)
2012年4月5日 由 learnhard 没有评论 »转载必须注明出处:http://www.codelast.com/
本文可以让刚接触pig的人对一些基础概念有个初步的了解。
本文的大量实例都是作者Darran Zhang(website: codelast.com)在工作、学习中总结的经验或解决的问题,并且添加了较为详尽的说明及注解,此外,作者还在不断地添加本文的内容,希望能帮助一部分人。
要查看Pig系列教程,请点击【这里】。
Apache pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。Twitter就大量使用pig来处理海量数据——有兴趣的,可以看Twitter工程师写的这个PPT。
但是,刚接触pig时,可能会觉得里面的某些概念以及程序实现方法与想像中的很不一样,甚至有些莫名,所以,你需要仔细地研究一下基础概念,这样在写pig程序的时候,才不会觉得非常别扭。
本文基于以下环境:
pig 0.8.1
» 阅读更多: [原创]Apache Pig的一些基础概念及用法总结(2)
[原创]使用Apache Pig时应该注意/避免的操作或事项
2012年3月27日 由 learnhard 1条评论 »转载必须注明出处:http://www.codelast.com/
Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。
本文基于以下环境:
pig 0.8.1
文章来源:http://www.codelast.com/
(1)CROSS操作
由于求交叉积可能会导致结果数据量暴增,因此,CROSS操作是一个“昂贵”的操作,可能会耗费Hadoop集群较多的资源,使用的时候需要评估一下数据量的大小。
» 阅读更多: [原创]使用Apache Pig时应该注意/避免的操作或事项
[原创]Apache Pig中文教程(进阶)
2012年3月15日 由 learnhard 没有评论 »转载必须注明出处:http://www.codelast.com/
本文包含Apache Pig的一些进阶技巧及用法小结。如要学习基础教程,请查看我写的【其他几篇文章】。
本文的大量实例都是作者Darran Zhang(website: codelast.com)在工作、学习中总结的经验或解决的问题,并且添加了较为详尽的说明及注解,此外,作者还在不断地添加本文的内容,希望能帮助一部分人。
Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。
» 阅读更多: [原创]Apache Pig中文教程(进阶)
[原创]模拟一个简陋的电商价格历史系统
2012年1月18日 由 learnhard 1条评论 »转载须注明出处:http://www.codelast.com
现在网购已经再普通不过,在各电商之间对商品进行比价也是家常便饭了,各种比价应用层出不穷。但是,查看同一商家、同一商品的历史价格趋势,似乎却不流行(或许只是我认为这样)。
拿京东商城来说,你如何知道一个商品的价格历史趋势?京东提供了“降价通知”功能,可以在商品降价时发通知告诉你。但是消费者往往愿意自己去判断,于是出现了“360444”这样的网站,可以为你提供京东商品的历史价格。
例如,当你对京东的这款商品感兴趣,并且准备购买时,你可以把网址中的“buy”换成“444”,然后访问它,就会看到类似于下面的页面内容(图片有点小,要看清晰大图请自己动手):
» 阅读更多: [原创]模拟一个简陋的电商价格历史系统
[原创]一些未归类的命令、操作方法或问题总结(4)
2011年12月27日 由 learnhard 没有评论 »下面是一些未归类的命令及操作方法,专门记在此文中,以便将来查询。由于文章较长,请用Ctrl+F查询关键字来定位到你需要的内容。
(1)用shell对某个数据文件的第二列求和
cat a.txt | awk '{print $2}' | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}'
其中,a.txt即为数据文件。
(2)echo输出制表符(tab,\t)
要用echo语句输出制表符\t到文件中,需要加 -e 参数:
A="mine"; B="yours"; echo -e "$A\t$B" > 1.txt
如果不加 -e 参数,则输出文件中会有一个 \t 字符串,而不是一个制表符。
» 阅读更多: [原创]一些未归类的命令、操作方法或问题总结(4)
[原创]使用C++(通过Thrift)访问/操作/读写Hbase
2011年9月1日 由 learnhard 6 条评论 »转载必须注明出处:http://www.codelast.com/
无奈,网上关于C++访问Hbase的文章实在太少,所以只好自己折腾一下,然后写出来了。
要使用C++访问Hbase,可以走的途径少之又少,据说当前最好的方法就是通过Thrift来实现:http://thrift.apache.org/
所以本文分成几部分:(1)安装Thrift;(2)用Thrift 生成访问Hbase所需的C++文件;(3)在程序中通过Thrift来访问Hbase。
另外,本文只包含读写Hbase数据的例子,不包含配置Hbase的方法,如需这些内容,请自行搜索。
首先声明一下,本文基于以下环境:
» 阅读更多: [原创]使用C++(通过Thrift)访问/操作/读写Hbase
[原创] log4cxx在Linux下的安装、使用
2011年8月9日 由 learnhard 1条评论 »简单地说,log4cxx就是一个记录日志的C++库(程序运行的时候要保存一些日志到文件,以供将来查看),它是从著名的Java日志库log4j移植而来的,并且它是Apache的一个项目,质量有保证,不用犹豫了,就用它吧!
补一句:Apache声称log4cxx的速度快、灵活性好,但是,速度快是第一位的,灵活性是第二位的("Log4cxx claims to be fast and flexible: speed first, flexibility second."),所以,担心日志记录性能的同学更可以选择log4cxx啦。
但是,这玩意的安装、编译稍微有点麻烦,如果遇到了问题,没耐心的人可能就没兴趣折腾了,我在这里把自己遇到的问题记一下。
系统环境:RHEL 5.3,64位
[原创]华为HG255d家庭网关的破解&使用其他无线路由器桥接HG255d直连光猫
2011年6月8日 由 learnhard 32 条评论 »转载请注明出处:本文来自learnhard的网站:http://www.codelast.com/
电信提供的HG255d家庭网关(就是一台网络设备),作为光纤到户宽带赠送的网络设备,在使用上有诸多限制。本文向大家介绍了如何破解家庭网关以拿到其超级用户权限,以及使用自己的无线路由器桥接HD255d直连光纤猫,从而避开HG255d对BT下载的限制的方法。
警告:本文仅作学习用途,对造成的任何损失及后果不承担任何责任!
在安装光纤到户宽带的时候,电信提供了两台设备:一是光纤猫,我们不需要动它;另一台是华为产的HD255d网络设备,它是一台融合了无线路由、IPTV、电话等功能的设备,所以你可以看到它上面不仅有LAN接口,而且有IPTV接口、电话机接口等。入户的光纤接在光猫上,从光猫出来的一根网线接到华为HG255d上,然后,我们可以采用有线或无线(WiFi)的方式连接到HG255d上,就可以上网了。光猫和HG255d每次上电的时候,HG255d会自动拨号(类似于无线路由器接ADSL猫上网一样)连接网络,所以你连接到HG255d上之后,就可以直接上网了。