本文是我对这篇文章的翻译:Thrift Java Servers Compared,为了便于阅读,我将原文附于此处,翻译穿插在其中。此外,为了防止原链接在未来某一天失效后,文中的图片再也看不到的问题,我将原文中的图片也保存到了本站的服务器上,我不知道github或原作者是否允许这样做,但我翻译本文仅在于传播知识的目的,在此向原作者和github表示深深的感谢:感谢你们分享了这样好的文章。
Thrift Java Servers Compared
This article talks only about Java servers. See this page if you are interested in C++ servers.
本文仅讨论Java版的Thrift server.如果你对C++版的感兴趣,请参考 这个 页面。
原创
[原创] Emacs on Windows初步实践
Emacs是个好东西,最近我在Windows下也用起了Emacs,是因为有很多特定类型文件的语法高亮显示很好用,例如Apache Pig文件,Thrift文件在Emacs中都有了现成的语法高亮支持,等等,如果你用Notepad++等文本编辑器就必须自己编写语法高亮规则了(会累死你)。
文章来源:http://www.codelast.com/
下面记录一下Emacs Windows版从安装到基础配置的过程。
[原创]无法向HBase表插入数据的一个问题
遇到一例无法向HBase插入数据的问题,发现问题所在之后觉得超级雷人,特记录下来。
[原创]Apache Pig的一些基础概念及用法总结(2)
查看更多Apache Pig的教程请点击这里。
▶▶ LIMIT操作并不会减少读入的数据量
如果你只需要输出一个小数据集,通常你可以使用LIMIT来实现,例如:
A = LOAD '1.txt' AS (col1: int, col2: chararray);
B = LIMIT A 5;
DUMP B;
Pig会只加载5条记录,就不再读取其他的记录了吗?答案是:不会。Pig将读取数据文件中的所有记录,然后再从中挑5条。这是Pig可以做优化、却没有做的一点。
【更新】Pig 0.10已经有了这功能了:
Push Limit into LoaderPig optimizes limit query by pushing limit automatically to the loader, thus requiring only a fraction of the entire input to be scanned.
文章来源:http://www.codelast.com/
▶▶ 使用UDF不一定要在Pig脚本中REGISTER,也可以在命令行指定
大家知道,使用UDF需要在Pig脚本中REGISTER该UDF的jar包,但你可能不知道,你也可以不在Pig脚本中REGISTER它,而是通过命令行指定:
pig -Dpig.additional.jars=/home/codelast/a.jar:/home/codelast/b.jar:/home/codelast/c.jar test.pig
以上命令告诉了我们几件事:
①我们让Pig执行了test.pig脚本;
②我们向Pig传入了“pig.additional.jars”这样一个参数,此参数的作用相当于在Pig脚本中REGISTER jar包;
③如果你要REGISTER多个jar包,只需像上面的例子一样,用分号(:)把多个jar包路径隔开即可;
④test.pig必须写在最后,而不能写成“pig test.pig -Dpig.additional.jars=XXX”这样,否则Pig直接报错:
ERROR 2999: Unexpected internal error. Encountered unexpected arguments on command line - please check the command line.
当然,为了可维护性好,你最好把REGISTER jar包写在Pig脚本中,不要通过命令行传入。
[原创]使用Apache Pig时应该注意/避免的操作或事项
查看更多Apache Pig的教程请点击这里。
Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。
本文基于以下环境:
pig 0.8.1
文章来源:http://www.codelast.com/
(1)CROSS操作
由于求交叉积可能会导致结果数据量暴增,因此,CROSS操作是一个“昂贵”的操作,可能会耗费Hadoop集群较多的资源,使用的时候需要评估一下数据量的大小。
[原创]Apache Pig中文教程合集
Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。
我根据自己在工作中的学习和总结,写了如下一些Apache Pig中文教程,供大家参考。
文章来源:http://www.codelast.com/
➤ Apache Pig的一些基础概念及用法总结(1)
[原创]Apache Pig中文教程(进阶)
本文包含Apache Pig的一些进阶技巧及用法小结。如要学习基础教程,请查看我写的【其他几篇文章】。
本文的大量实例都是作者Darran Zhang(website: codelast.com)在工作、学习中总结的经验或解决的问题,并且添加了较为详尽的说明及注解,此外,作者还在不断地添加本文的内容,希望能帮助一部分人。
Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。
[原创]摄像头娘来了
被标题吸引进来的各位,抱歉,这还是一篇技术文章
本文的主角是一个摄像头及其配套程序,我毫无创意地模仿网上的流行说法,称之为“摄像头娘”。她会自己发微博,记得follow她哦:t.qq.com/cameragirl
前段时间浙大有个博士做了个“饮水机娘”,也就是他实验室里的饮水机没水或者水加热开了的时候,都会自动发一条微博。这个与“物联网”扯上了关系的东西,让我原来以为那位博士是改造了饮水机,加上了温度及水位传感器,配合单片机,将饮水机的状态采集到PC中去,再写一个PC上的软件将触发的事件发送到微博上,后来看了相关的介绍,才知道没那么复杂,其实他没有改造饮水机,而是用一个摄像头对准饮水机的状态指示灯,根据指示灯的情况,来判断饮水机的状态。
于是我也就萌生了做一个“摄像头娘”的念头。
我构想中的“摄像头娘”是这样的:当有物体在她面前运动的时候,她能感受得到,并且会为这个过客拍一张照片,然后发到微博上。
下面是实际效果截图:
[原创]一些未归类的命令、操作方法或问题总结(3)
下面是一些未归类的命令及操作方法,专门记在此文中,以便将来查询。由于文章较长,请用Ctrl+F查询关键字来定位到你需要的内容。
(1)使emacs不要生成临时文件
在emacs中编辑了文件并保存后,通常会生成一个临时文件,假设原文件名为a.txt,则生成的临时文件名为a.txt~,如果不想生成,可以在emacs配置文件 .emacs 中添加一句:
(setq-default make-backup-files nil)
[原创]Apache Pig的一些基础概念及用法总结(1)
查看更多Apache Pig的教程请点击这里。
本文可以让刚接触pig的人对一些基础概念有个初步的了解。
很久很久以前,本文大概是互联网上第一篇公开发表的且涵盖大量实际例子的Apache Pig中文教程(由Google搜索可知),文中的大量实例都是作者Darran Zhang(website: codelast.com)在工作、学习中总结的经验或解决的问题,并且添加了较为详尽的说明及注解,希望能帮助一部分人。
Apache pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。
但是刚接触pig时,可能会觉得里面的某些概念以及程序实现方法与想像中的很不一样,所以,你需要仔细地研究一下基础概念,这样在写pig程序的时候,才不会觉得非常别扭。
[原创]使用C++(通过Thrift)访问/操作/读写Hbase
无奈,网上关于C++访问Hbase的文章实在太少,所以只好自己折腾一下,然后写出来了。
要使用C++访问Hbase,可以走的途径少之又少,据说当前最好的方法就是通过Thrift来实现:http://thrift.apache.org/
所以本文分成几部分:(1)安装Thrift;(2)用Thrift 生成访问Hbase所需的C++文件;(3)在程序中通过Thrift来访问Hbase。
另外,本文只包含读写Hbase数据的例子,不包含配置Hbase的方法,如需这些内容,请自行搜索。
首先声明一下,本文基于以下环境:
[原创] log4cxx在Linux下的安装、使用
简单地说,log4cxx就是一个记录日志的C++库(程序运行的时候要保存一些日志到文件,以供将来查看),它是从著名的Java日志库log4j移植而来的,并且它是Apache的一个项目,质量有保证,不用犹豫了,就用它吧!
补一句:Apache声称log4cxx的速度快、灵活性好,但是,速度快是第一位的,灵活性是第二位的("Log4cxx claims to be fast and flexible: speed first, flexibility second."),所以,担心日志记录性能的同学更可以选择log4cxx啦。
但是,这玩意的安装、编译稍微有点麻烦,如果遇到了问题,没耐心的人可能就没兴趣折腾了,我在这里把自己遇到的问题记一下。
系统环境:RHEL 5.3,64位
[原创]拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
在最优化领域,有几个你绝对不能忽略的关键词:拟牛顿、DFP、BFGS。名字很怪,但是非常著名。下面会依次地说明它们分别“是什么”,“有什么用” 以及 “怎么来的”。
但是在进入正文之前,还是要先提到一个概念上的区别,否则将影响大家的理解:其实DFP算法、BFGS算法都属于拟牛顿法,即,DFP、BFGS都分别是一种拟牛顿法。
[原创]华为HG255d家庭网关的破解&使用其他无线路由器桥接HG255d直连光猫
电信提供的HG255d家庭网关(就是一台网络设备),作为光纤到户宽带赠送的网络设备,在使用上有诸多限制。本文向大家介绍了如何破解家庭网关以拿到其超级用户权限,以及使用自己的无线路由器桥接HD255d直连光纤猫,从而避开HG255d对BT下载的限制的方法。
警告:本文仅作学习用途,对造成的任何损失及后果不承担任何责任!
在安装光纤到户宽带的时候,电信提供了两台设备:一是光纤猫,我们不需要动它;另一台是华为产的HD255d网络设备,它是一台融合了无线路由、IPTV、电话等功能的设备,所以你可以看到它上面不仅有LAN接口,而且有IPTV接口、电话机接口等。入户的光纤接在光猫上,从光猫出来的一根网线接到华为HG255d上,然后,我们可以采用有线或无线(WiFi)的方式连接到HG255d上,就可以上网了。光猫和HG255d每次上电的时候,HG255d会自动拨号(类似于无线路由器接ADSL猫上网一样)连接网络,所以你连接到HG255d上之后,就可以直接上网了。
[原创]最速下降法/steepest descent,牛顿法/newton,共轭方向法/conjugate direction,共轭梯度法/conjugate gradient 及其他
在最优化的领域中,这“法”那“法”无穷多,而且还“长得像”——名字相似的多,有时让人觉得很迷惑。
在自变量为一维的情况下,也就是自变量可以视为一个标量,此时,一个实数就可以代表它了,这个时候,如果要改变自变量的值,则其要么减小,要么增加,也就是“非左即右“,所以,说到“自变量在某个方向上移动”这个概念的时候,它并不是十分明显;而在自变量为n(n≥2)维的情况下,这个概念就有用了起来:假设自变量X为3维的,即每一个X是(x1, x2, x3)这样的一个点,其中x1,x2和x3分别是一个实数,即标量。那么,如果要改变X,即将一个点移动到另一个点,你怎么移动?可以选择的方法太多了,例如,我们可以令x1,x2不变,仅使x3改变,也可以令x1,x3不变,仅使x2改变,等等。这些做法也就使得我们有了”方向“的概念,因为在3维空间中,一个点移动到另一个点,并不是像一维情况下那样“非左即右”的,而是有“方向”的。在这样的情况下,找到一个合适的”方向“,使得从一个点移动到另一个点的时候,函数值的改变最符合我们预定的要求(例如,函数值要减小到什么程度),就变得十分有必要了。