上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页

2010年2月5日

shell heredoc 微妙之处

摘要: linux firefox 下,这篇文章被csdn排乱了,并且无法修改排版格式,这第一行倒可以修改!排版正确的在 javaeye今天是我两个多月以来第一次使用 csdn 直接写博客,碰到这样的事情,让我太失望了,浪费我如此多的时间!here doc 的一般用法:[cmd] file <<EOFsome text write to fileEOF# show filecat file# save heredoc text to varread var << EOFsome text save to varEOF# show varecho $var使用``捕获 hered 阅读全文

posted @ 2010-02-05 18:34 能发波 阅读(215) 评论(0) 推荐(0) 编辑

通过管道向 hadoop put 文件

摘要: 使用 hadoop file shell 可以方便地向 hdfs put 文件,但是,该 shell 不支持从管道读取数据并放到 hdfs 文件中。它仅支持这样的 put 命令:Shell 代码 cd$HADOOP_HOMEbin/hadoopfs-putlocalfile$hdfsFilebin/hadoopfs-putlocalfiles$hdfsDircd $HADOOP_HOMEbin/hadoop fs -put localfile $hdfsFilebin/hadoop fs -put localfiles $hdfsDir幸好,主流的 unix (linux,bsd等)都有一个 阅读全文

posted @ 2010-02-05 15:56 能发波 阅读(357) 评论(0) 推荐(0) 编辑

shell 中验证管道是否正确执行

摘要: 象这样的 shell 代码:prog1 | prog2 | prog3 | prog4 prog1 | prog2 | prog3 | prog4$? 只能得到最后一个命令的返回值,该 如何检查整个命令是否全部正确执行? 有一个数组变量PIPESTATUS,保存了最近一个管道命令中所有子命令的返回值该返回值与 $? 一样,每次命令都会改写它,因此,要保存它就必须马上!以下代码可以检查管道命令:prog1 | prog2 | prog3 | prog4if [[ "0 0 0 0" == ${PIPESTATUS[*]} ]]then echo successelse ech 阅读全文

posted @ 2010-02-05 15:53 能发波 阅读(271) 评论(0) 推荐(0) 编辑

my PipelineProcessor

摘要: 刚看到,intel tbb::pipeline 实现的功能,和我以前实现的一个pipeline : febird::thread::PipelineProcessor ,介绍:1. 多线程的 pipeline 设计模式2. 多线程 Pipeline 的改进几乎就是同一个东西:多线程流水线执行,按次序,stage划分……可惜啊,它只在我的几个程序中用过,现在有了tbb,它还没来得及壮大就得夭折了。聊以自慰: 1. 英雄所见略同 2. 这个轮子很有价值 3. 发明轮子之前,先多看看 4. 多看看,碰到问题就免得发明轮子 阅读全文

posted @ 2010-02-05 15:52 能发波 阅读(131) 评论(0) 推荐(0) 编辑

简单的代码生成器创建领域语言

摘要: 有一类问题,代码模板相同,但有少部分地方不同,一般可以写一个复杂的程序,使用不同的选项,完成不同的任务。或者,把公共的部分抽象成一个代码库,然后在不同程序中引用。但是,如果公共的部分很少,并且比较“专用”,或者因为其它原因,比较难以部署。怎么办?实际上,有另一种完全不同的编程模式来实现:代码生成器。unix世界中最知名的代码生成器莫过于lex和yacc了。但是,不比每个代码生成器都那么复杂,比如这个代码生成器就非常简单,它只是简单地转换行记录:#! /bin/shfield_seperator="||"output=bwhile getopts :F:vo: argdoca 阅读全文

posted @ 2010-02-05 15:46 能发波 阅读(164) 评论(0) 推荐(0) 编辑

LC_ALL=en_US.UTF-8 让 awk 慢了 40 倍!

摘要: 无意中发现,在一台服务器上,非常简单的awk程序,比C的等价物要慢40倍,感觉有点不太正常,还以为的确是awk太慢。不得其解,到另一台服务上试了一下,相同的 awk 程序,相同的测试数据,这台服务器的速度与C相当,也就是说,同样是awk,两台机器速度差了 40倍,而两台机器配置基本相当。非常困惑,找了两小时的原因,终于发现gawk手册里面有一段话:For other single-character record separators, using ‘LC_ALL=C’will give you much better performance when reading records. O.. 阅读全文

posted @ 2010-02-05 15:44 能发波 阅读(178) 评论(0) 推荐(0) 编辑

count, sum, avg by range in log(n) time

摘要: 考虑一下这样一个查询:select count(*), sum(tax), avg(weight) from pepolewhere id >= ${minid} && id open(db, NULL, "tablename", "filename", DB_BTREE, DB_CREATE, 0); db->set_flags(db, DB_RECNUM); /*.....*/ int get_rank(DB* db, const void* key, size_t klen, db_recno_t* rank) { in 阅读全文

posted @ 2010-02-05 15:40 能发波 阅读(166) 评论(0) 推荐(0) 编辑

MapReduce应该做更少的事情

摘要: MapReduce 做的事情太多了。相比 unix 思想,它更多的是提供了一种策略(Policy),而非一种机制(Machanism)。对于并行计算,如果我仅仅需要一种机制,暂且把这种机制叫做S,那么S只需要提供:任意切分原始输入 ——split无依赖的计算 ——map按依赖切分中间结果 ——partition有依赖的计算 ——reduce容错 ——MR 矩阵(包括数据)MapReduce当然提供了这个机制,只是,以它自己特定的方式(Policy)提供——就是排序。Map 阶段是无依赖的计算,Reduce是有依赖的计算。Map的输入集合可以是任意顺序,任意切分,Co... 阅读全文

posted @ 2010-02-05 15:38 能发波 阅读(102) 评论(0) 推荐(0) 编辑

字符串基数排序

摘要: 对字符串使用基数排序,以前,我一直觉得:因为字符串的长度不一,无法使用基数排序。前两天因为有需要,忽然想通了!即便长短不一,也可以使用链式基数排序! 首先,将字符串长度当作最低有效位,因为基数排序是从最低有效位开始排的,就先用分配-收集算法对长度做一趟。对字符串中的具体某一位字符进行排序相比,算法是一样的,只是写法稍有不同。要将排序结果的lenRadix指针保存起来,后面要用。 接下来,从lenRadix中取字符串最长的那个sublist,对该sublist排序,然后将这一趟的结果first保存起来,连接到长度次短的那个sublist之后,然后对这两个链接起来的列表进行一趟分配-收集。... 阅读全文

posted @ 2010-02-05 15:36 能发波 阅读(568) 评论(0) 推荐(0) 编辑

MultipleInputs/MultipleOutpus

摘要: 仔细看了一下 Hadoop.MapReduce 的代码,发现了两个新类:MultipleInputs/MultipleOutpus,再仔细看它们的详细文档,的确实现了我想要的功能:不同的InputPath,可是使用不同的InputFormat 和 Mapper可以将不同类型(可能是多种计算)的结果写入不同的Reduce Output。再看一下它们的实现代码,让我大失所望,MultipleInput 还行,没有白白折损效率的地方,MultipleOutput就太让我大跌眼镜了!简单的写一条记录出去,白白做的额外工作的耗时,可以写30条记录了。多了解MapReduce的整体实现,可以考虑自己做一个 阅读全文

posted @ 2010-02-05 15:27 能发波 阅读(192) 评论(0) 推荐(0) 编辑

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页

导航