Categories
日常应用

Hadoop Arvo Schema 和 HIVE 笔记

昨天捣鼓了一天这个东西,随便写点笔记。

  • arvo:除了著名的hdfs文件,hadoop上常用的另一种序列化存储的文件格式就是arvo。简单的讲,这货就是由一个定义好的schema来读取的二进制文本文件。
  • arvo schema:很像json...比如这里这个:
{
 "type" : "record",
 "name" : "Tweet",
 "namespace" : "com.miguno.avro",
 "fields" : [ {
 "name" : "username",
 "type" : "string",
 "doc" : "Name of the user account on Twitter.com"
 }, {
 "name" : "tweet",
 "type" : "string",
 "doc" : "The content of the user's Twitter message"
 }, {
 "name" : "timestamp",
 "type" : "long",
 "doc" : "Unix epoch time in seconds"
 } ],
 "doc:" : "A basic schema for storing Twitter messages"
}
  • 定义好schema之后可以用java去build...
  • arvo to HIVE:可以直接建HIVE external table. (还是上面那个link)
CREATE EXTERNAL TABLE tweets
 COMMENT "A table backed by Avro data with the Avro schema stored in HDFS"
 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
 STORED AS
 INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
 OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
 LOCATION '/user/YOURUSER/examples/input/'
 TBLPROPERTIES (
 'avro.schema.url'='hdfs:///user/YOURUSER/examples/schema/twitter.avsc'
 );

然后就是正常的玩法了。

Categories
读书有感

papers I read in eBay

只是罗列一些这一两年比较关注的具体领域。

  • 自然语言处理与分词:看了很多分词类的算法,从字符匹配、MMSeg、HMM,到条件随机场之类。主要是为了提取关键词作为regressors。当然做这个一方面是好玩(周围很多朋友都在玩),另一方面也是不想被专家忽悠...嗯。另外就是TD-IDF、余弦相似度这些纯粹是为了不被忽悠。
  • 稀疏矩阵:稀疏矩阵完全是从上面继承而来的,往往分词之后搞来一个很大很稀疏的矩阵,为了降低computational cost或者干脆就是考虑到computational capacity,这个不得不做,然后就可以开始奇异值分解了。后面恍然发现,这丫不就是adjancy list和matrix的区别么...顿时为自己的智商隐隐担忧。
  • 近似计算方法:主要是binning methods,起因是觉得teradata算variance比较慢,所以看了一下能不能先binning再算variance以节省计算时间(说白了就是在teradata现有的map-reduce上想个更好的办法)。实用主义嘛。最后的感想就是,其实对于variance这种linear method,分布式已经蛮成熟了,在每一个map步能降低的computational time还是有限的...
  • 异常点识别:这个主要是有段时间在研究怎么可以有效的去掉outlier,不让这些点干扰计算(尤其是涉及均值的)。当然基本的就是基于ranking,后面发现这东西水还蛮深的,牵扯到distance measurement,stratified sampling等等。
  • 分布式计算:有段时间想了解一下Hadoop map reduce,所以去看了一些基本的分布式计算的东西。好吧,其实我还是觉得hadoop接口不够那么人性化,基于java的东西我还一时半会儿搞不定(从伪代码到代码到命令调度及debug还有好长的路要走...)。
  • 实验设计:这个貌似一直都在断断续续的看一些文章,从基本的随机试验的思想到后面各种具体环节的实现,以及不理想状况下的一些修正(比如连续实验、网络中实验、spillover effects等)。最近在试图利用RDD来改善一些现有实验设计和评估,此外不时瞅一下有没有好玩的网络实验的机会。(对eBay 3.0无限期待中...)
  • 贝叶斯网络:从MCMC开始的吧,陆陆续续看了好多马尔可夫网络和贝叶斯网络的东西,什么Belief Propagation。当然这里面也包括了Conditional Random Field这些语音识别、图像识别的基本原理和常用方法什么的。这也有种不被专家忽悠的想法,毕竟看来看去也就是这几种常见的算法的不同应用嘛。(修PGM那门课真的可以列作年度噩梦之一了...)
  • 拍卖设计:这个完全是由于随便搜搜eBay基本上都牵扯到auction design,所以顺带看一下...总的大趋势还是排名在向一口价转变,多少也有种一手市场快速增长的感觉。哎,consumer theory大爱的东西啊。
  • 社群识别:最近遇到一些这方面的挑战...一方面是clustering,另一方面是sparcification。总的感觉是,无论是稀疏矩阵还是矩阵稀疏化,都是去除噪音找到有用信号的过程...
  • 协同过滤:其实collaborative filtering是很久以前看的了,当时工作需要(印象最深的就是IBM的三篇笔记)...现在感觉看过这类方法的好处就是,很多问题越来越能和后面接触到的直觉相契合,感觉很多具体的算法和想法实践都是在这个框架之下或简或繁的变化,万变难离其宗嗯。

总而言之,我觉得我越来越不像一个学经济学的孩子...可怜。好吧,这些最多算是紧跟潮流吧,很多东西回头看看也没觉得多有意思。

被一份工作逼到如此程度也算是奇葩了...哎。最近的感觉就是,我还是去关注一下business side的一些趋势吧,多看一些new business models,毕竟这才是真正创造出来价值的。

Categories
读书有感

Bootstrap + subsample: simple, efficient, then elegant?

继续昨天。早晨一起来,看到施老师的一句简短评论,瞬间人就清醒了。然后跟做错了事的小孩子似的,惴惴不安的跑到office里面,翻墙,开始下paper。

现在的节奏基本上是白天开会写代码,晚上回家看paper,哎,不看心里总觉得好惶恐。还好中间等车等了蛮久的,顺便就借着六七点昏黄的路灯把这篇不算太长的paper看完了。有趣的是等车的时候碰到一位同事,然后我俩就开始呱唧呱唧的聊起来统计推断了...不知道当时旁边的路人是不是一道黑线,幸好当时把ebay的牌牌藏在了衣服里面...

这篇不算长的paper是:Bootstrapping Big Data,UC Berkeley 计算机系一群人鼓捣出来的。idea很简单(符合第一标准,simple),就是在大数据上(无放回的随机抽样)取一些subsamples,然后在这些subsamples上面做bootstrap,然后把结果取平均数。

这样的好处显而易见,天生的分布式算法,把数据随机分布到各个计算节点就可以了。然后bootstrap也不用占那么大的内存了,空间时间都省掉了,所以符合第二标准:efficient。

最后,就是还是比较effective的,有着良好的渐进收敛性质。和直接的bootstrap相比,它不仅保持渐进一致,而且有着更高的收敛速度,还是天生并行的...过年回济南的时候joke童鞋(高中同学)去火车站接我,然后我们就兴致昂扬的聊起来大数据和算法并行问题了...是不是有点天雷滚滚?哇咔咔,大过年的...好久没见竟然是如斯叙旧,汗。

此外,还可以结合binning的思路做一些weighted calculation,这样又进一步节省了时间。

不知道这样是不是就足够的elegant了...我看了一眼converging rate 还是比较好看的。伪代码思路也是简单得很。还可以用在各种现成的线形非线性、参数非参数模型上,真是瞬间变身并行高富帅。貌似和前段时间看到的rmr2包里面做OLS并行的思路有点像,待我细细研究一下。

algorithm

唯一的concern就是这东西更适合hadoop而不适合teradata,哎。我没法在TD上控制节点的分配,这个比较讨厌。Hadoop可以直接写并行map reduce,就会方便很多了。

 

先看了这一篇简介,后面慢慢地研究一些理论证明什么的,有点too good to believe...还是先找点数据测试玩玩吧^_^
efficiency