由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 还是awk牛B
相关主题
Shell script 问题易写性,易维护和执行效率综合来看
Usage of Grep???help!!!dart对于js就象ruby对于perl一样
请教一个perl的问题 (转载)说实话要是没有谷歌的话Python在Linux下的地位不如PHP和Perl
请教一个模式匹配问题从心底讨厌scala
Regular Expression 问题How to write a VB Macro to convert text to hyperlink in Excel
A problem on string parsing (using either grep or perl)急! Python 如何从文件读取数据(整数) ~~在线等
问个关于正则表达式的超弱智问题...Help! Read random number of lines in a input file.
求推荐python based framework 问一个小程序python得
相关话题的讨论汇总
话题: awk话题: parallel话题: wc话题: pipe话题: streaming
进入Programming版参与讨论
1 (共1页)
d********t
发帖数: 9628
1
以前也没觉得有啥,今天dei处理一个几百兆的csv文件,excel要开半天。R更搞笑,
read.table度不完,换data.table.fread,每次到15%就死机了,只能关电源重启。awk
处理完两分钟不到。
w***g
发帖数: 5958
2
再加上gnu parallel把multi-core用足了,还能更快。

awk

【在 d********t 的大作中提到】
: 以前也没觉得有啥,今天dei处理一个几百兆的csv文件,excel要开半天。R更搞笑,
: read.table度不完,换data.table.fread,每次到15%就死机了,只能关电源重启。awk
: 处理完两分钟不到。

d********t
发帖数: 9628
3
这个咋整

【在 w***g 的大作中提到】
: 再加上gnu parallel把multi-core用足了,还能更快。
:
: awk

w***g
发帖数: 5958
4
如果你没有parallel命令,或者命令比较老的话,先用下面的更新。
(wget -O - pi.dk/3 || curl pi.dk/3/) | sudo bash
比如有个大文件XXX有1G, 想数行数。直接就是
cat XXX | wc -l
用parallel就是
cat XXX | parallel --block 10M --pipe wc -l | awk 'BEGIN{a=0;}{a = a+ $1;}
END{print a;}'
wc -l可以换成grep, awk等任意可以以pipe方式运行的程序。
parallel --pipe会把输入分成大致--block指定的大小,默认是1M。然后启动N个wc一
块跑。和hadoop一样,parallel只会在行与行之间切分,所以是awk-friendly的。
parallel --pipe这步相当于map,如果有需要后面再reduce一下。
如果不加--pipe,输入的每一行会作为参数启动一个后面跟的命令。比如你的输入如果
存在大量文件里,那么就是find ... -type f | pipe wc -l 了
很多人不会写脚本,用java写个mapreduce就牛B哄哄的。其实几G几十G数据的话随便写
两行脚本就解决了。

【在 d********t 的大作中提到】
: 这个咋整
d********t
发帖数: 9628
5
谢了,不过现在公司还是Windows,这些在Cygwin下估计不能work吧:(

【在 w***g 的大作中提到】
: 如果你没有parallel命令,或者命令比较老的话,先用下面的更新。
: (wget -O - pi.dk/3 || curl pi.dk/3/) | sudo bash
: 比如有个大文件XXX有1G, 想数行数。直接就是
: cat XXX | wc -l
: 用parallel就是
: cat XXX | parallel --block 10M --pipe wc -l | awk 'BEGIN{a=0;}{a = a+ $1;}
: END{print a;}'
: wc -l可以换成grep, awk等任意可以以pipe方式运行的程序。
: parallel --pipe会把输入分成大致--block指定的大小,默认是1M。然后启动N个wc一
: 块跑。和hadoop一样,parallel只会在行与行之间切分,所以是awk-friendly的。

g*****g
发帖数: 34805
6
mapreduce那是跑集群用的。P级数据一样跑。几十个 G 写个 streaming跑并发也就10
行吧。可以写复杂点的 filtering.

【在 w***g 的大作中提到】
: 如果你没有parallel命令,或者命令比较老的话,先用下面的更新。
: (wget -O - pi.dk/3 || curl pi.dk/3/) | sudo bash
: 比如有个大文件XXX有1G, 想数行数。直接就是
: cat XXX | wc -l
: 用parallel就是
: cat XXX | parallel --block 10M --pipe wc -l | awk 'BEGIN{a=0;}{a = a+ $1;}
: END{print a;}'
: wc -l可以换成grep, awk等任意可以以pipe方式运行的程序。
: parallel --pipe会把输入分成大致--block指定的大小,默认是1M。然后启动N个wc一
: 块跑。和hadoop一样,parallel只会在行与行之间切分,所以是awk-friendly的。

S*******e
发帖数: 525
7
我也觉得他那方法毕竟还是单机的 -- parallel 也不能在IO上快太多。

10

【在 g*****g 的大作中提到】
: mapreduce那是跑集群用的。P级数据一样跑。几十个 G 写个 streaming跑并发也就10
: 行吧。可以写复杂点的 filtering.

w***g
发帖数: 5958
8
麻烦你说个我们不知道的。hadoop又不是到处都有。我倒是见过一些外行
处理几十G数据还专门装个hadoop。如果都是P级数据的话spark这种根本就火不起来。
Spark火就是证明了其实大部分情况下撑死也就若干T。

10

【在 g*****g 的大作中提到】
: mapreduce那是跑集群用的。P级数据一样跑。几十个 G 写个 streaming跑并发也就10
: 行吧。可以写复杂点的 filtering.

i**i
发帖数: 1500
9
read.table 需要把整个文件读到内存,用 data.frame存储。 如果这里面有字符串,
还要转换成factor. 很费劲的。
在R里,你需要直接用file, 每次读一部分。
你能用excel打开,应该不超过65535 行。 用R处理不在话下。

awk

【在 d********t 的大作中提到】
: 以前也没觉得有啥,今天dei处理一个几百兆的csv文件,excel要开半天。R更搞笑,
: read.table度不完,换data.table.fread,每次到15%就死机了,只能关电源重启。awk
: 处理完两分钟不到。

D*******a
发帖数: 3688
10
印象中excel至少能处理1048576行

【在 i**i 的大作中提到】
: read.table 需要把整个文件读到内存,用 data.frame存储。 如果这里面有字符串,
: 还要转换成factor. 很费劲的。
: 在R里,你需要直接用file, 每次读一部分。
: 你能用excel打开,应该不超过65535 行。 用R处理不在话下。
:
: awk

相关主题
A problem on string parsing (using either grep or perl)易写性,易维护和执行效率综合来看
问个关于正则表达式的超弱智问题...dart对于js就象ruby对于perl一样
求推荐python based framework说实话要是没有谷歌的话Python在Linux下的地位不如PHP和Perl
进入Programming版参与讨论
i**i
发帖数: 1500
11
2010是65535.
2013是1,048,576 rows by 16,384 columns

【在 D*******a 的大作中提到】
: 印象中excel至少能处理1048576行
g*****g
发帖数: 34805
12
这你也看干什么,如果要想实时结果数据量小也不见得错

【在 w***g 的大作中提到】
: 麻烦你说个我们不知道的。hadoop又不是到处都有。我倒是见过一些外行
: 处理几十G数据还专门装个hadoop。如果都是P级数据的话spark这种根本就火不起来。
: Spark火就是证明了其实大部分情况下撑死也就若干T。
:
: 10

g*****g
发帖数: 34805
13
我说的 Java 8 streaming api 你就不知道呀,同样可以并发而且灵活度高。

【在 w***g 的大作中提到】
: 麻烦你说个我们不知道的。hadoop又不是到处都有。我倒是见过一些外行
: 处理几十G数据还专门装个hadoop。如果都是P级数据的话spark这种根本就火不起来。
: Spark火就是证明了其实大部分情况下撑死也就若干T。
:
: 10

d********t
发帖数: 9628
14
扯淡吧,一共52万行。

【在 i**i 的大作中提到】
: read.table 需要把整个文件读到内存,用 data.frame存储。 如果这里面有字符串,
: 还要转换成factor. 很费劲的。
: 在R里,你需要直接用file, 每次读一部分。
: 你能用excel打开,应该不超过65535 行。 用R处理不在话下。
:
: awk

w***g
发帖数: 5958
15
我以为你是hadoop streaming。 java那个没见过,你写个wc -l对应的我们看看。

【在 g*****g 的大作中提到】
: 我说的 Java 8 streaming api 你就不知道呀,同样可以并发而且灵活度高。
i**i
发帖数: 1500
16
你才傻逼呢。
把你的问件给我,让爷给你示范一下。

【在 d********t 的大作中提到】
: 扯淡吧,一共52万行。
w**z
发帖数: 8232
17
Java streaming 主要针对collection.

【在 w***g 的大作中提到】
: 我以为你是hadoop streaming。 java那个没见过,你写个wc -l对应的我们看看。
g*****g
发帖数: 34805
18
我也不熟,不过差不多长这样吧。并发读,快不快就要看配置了。如果你过滤复杂
regex不好写,或者上下行相关等等,这个就不错。
Files.lines("myFile").parallelStream().filter(l->l.contains(keyword)).count(
);
对应
grep keyword myFile | wc -l

【在 w***g 的大作中提到】
: 我以为你是hadoop streaming。 java那个没见过,你写个wc -l对应的我们看看。
m******t
发帖数: 635
19
几百兆的话,任意一个脚本语言Perl, python, Ruby都一点问题没有。玩得花的话可以
考虑Python Pandas

awk

【在 d********t 的大作中提到】
: 以前也没觉得有啥,今天dei处理一个几百兆的csv文件,excel要开半天。R更搞笑,
: read.table度不完,换data.table.fread,每次到15%就死机了,只能关电源重启。awk
: 处理完两分钟不到。

d********t
发帖数: 9628
20
是没问题,可是两百多column我只需要截取简单数据做简单计算,真心没必要写脚本。

【在 m******t 的大作中提到】
: 几百兆的话,任意一个脚本语言Perl, python, Ruby都一点问题没有。玩得花的话可以
: 考虑Python Pandas
:
: awk

相关主题
从心底讨厌scalaHelp! Read random number of lines in a input file.
How to write a VB Macro to convert text to hyperlink in Excel 问一个小程序python得
急! Python 如何从文件读取数据(整数) ~~在线等A C++ exception question
进入Programming版参与讨论
w**z
发帖数: 8232
21
重点是parallelstream
http://docs.oracle.com/javase/tutorial/collections/streams/para
but be careful:
http://zeroturnaround.com/rebellabs/java-parallel-streams-are-b
http://java.dzone.com/articles/think-twice-using-java-8
It's not coming for free.

count(

【在 g*****g 的大作中提到】
: 我也不熟,不过差不多长这样吧。并发读,快不快就要看配置了。如果你过滤复杂
: regex不好写,或者上下行相关等等,这个就不错。
: Files.lines("myFile").parallelStream().filter(l->l.contains(keyword)).count(
: );
: 对应
: grep keyword myFile | wc -l

d****i
发帖数: 4809
22
多谢指出问题,正如大神Linus最近指出的,忘掉操蛋的并行计算吧,并行计算不是
silver bullet,大部分时候我们并不需要并行也过得很好!java 8的stream底层的实
现就是fork-join pool,就是把他变成了看起来的语法糖而已。

【在 w**z 的大作中提到】
: 重点是parallelstream
: http://docs.oracle.com/javase/tutorial/collections/streams/para
: but be careful:
: http://zeroturnaround.com/rebellabs/java-parallel-streams-are-b
: http://java.dzone.com/articles/think-twice-using-java-8
: It's not coming for free.
:
: count(

w**z
发帖数: 8232
23
呵呵,觉得自己会multithread programming的大多不知道自己在干什么。
我是能不用尽量不用。只有benchmark 说performance 不行了,才会考虑。

【在 d****i 的大作中提到】
: 多谢指出问题,正如大神Linus最近指出的,忘掉操蛋的并行计算吧,并行计算不是
: silver bullet,大部分时候我们并不需要并行也过得很好!java 8的stream底层的实
: 现就是fork-join pool,就是把他变成了看起来的语法糖而已。

d****i
发帖数: 4809
24
如果需要的话,我宁可喜欢用较难的多线程的方式来写并行,也不喜欢像Java 8那样借
助于语法糖的一层包皮来实现所谓的并行。前者概念更清楚,容易让人知道自己在干什
么,虽然不易。后者则完全是为了语法糖而包了一层。

【在 w**z 的大作中提到】
: 呵呵,觉得自己会multithread programming的大多不知道自己在干什么。
: 我是能不用尽量不用。只有benchmark 说performance 不行了,才会考虑。

d****i
发帖数: 4809
25
对啊,有句名言叫做
Premature optimization is the root of all evil
你这个做法恰恰是对的

【在 w**z 的大作中提到】
: 呵呵,觉得自己会multithread programming的大多不知道自己在干什么。
: 我是能不用尽量不用。只有benchmark 说performance 不行了,才会考虑。

g*****g
发帖数: 34805
26
这当然是语法糖啦,只不过原来如果是blocking IO,这个做法没啥区别。比如上次我
跑个data migration,先从DB dump了几百万个记录,然后挨个做remote API call. 慢
在remote call上,只要单独起个pool,跟弄一堆Future没啥区别呀。反正单线程是肯
定不行的,估计得跑好几周。

【在 w**z 的大作中提到】
: 重点是parallelstream
: http://docs.oracle.com/javase/tutorial/collections/streams/para
: but be careful:
: http://zeroturnaround.com/rebellabs/java-parallel-streams-are-b
: http://java.dzone.com/articles/think-twice-using-java-8
: It's not coming for free.
:
: count(

r*g
发帖数: 3159
27
和perl比如何?

awk

【在 d********t 的大作中提到】
: 以前也没觉得有啥,今天dei处理一个几百兆的csv文件,excel要开半天。R更搞笑,
: read.table度不完,换data.table.fread,每次到15%就死机了,只能关电源重启。awk
: 处理完两分钟不到。

g*****g
发帖数: 34805
28
http://stackoverflow.com/questions/21163108/custom-thread-pool-
你可以看看这个thread。如果不是一次性的,用common pool是不可行的,但是用个
custom pool我觉得是一样的。

【在 w**z 的大作中提到】
: 重点是parallelstream
: http://docs.oracle.com/javase/tutorial/collections/streams/para
: but be careful:
: http://zeroturnaround.com/rebellabs/java-parallel-streams-are-b
: http://java.dzone.com/articles/think-twice-using-java-8
: It's not coming for free.
:
: count(

d********t
发帖数: 9628
29
应该比Perl快。我以前常用Perl的,不过Perl也有大块数据吃不进的问题。

【在 r*g 的大作中提到】
: 和perl比如何?
:
: awk

q*****w
发帖数: 62
30
请问如果一个打文件要sorting, 用parallel怎么写?
相关主题
ostream& operator << (ostream& s, int cnt) errorUsage of Grep???help!!!
openMP or boost::thread (pthread) for multithreading ?请教一个perl的问题 (转载)
Shell script 问题请教一个模式匹配问题
进入Programming版参与讨论
w***g
发帖数: 5958
31
不用parallel。Linux下新版本的sort自己就是多核的。

【在 q*****w 的大作中提到】
: 请问如果一个打文件要sorting, 用parallel怎么写?
M*P
发帖数: 6456
32
这先用excel再用readtable一看就是外行啊。

awk
★ 发自iPhone App: ChineseWeb 7.8

【在 d********t 的大作中提到】
: 以前也没觉得有啥,今天dei处理一个几百兆的csv文件,excel要开半天。R更搞笑,
: read.table度不完,换data.table.fread,每次到15%就死机了,只能关电源重启。awk
: 处理完两分钟不到。

e********2
发帖数: 495
33
awk可以用于streaming。

【在 M*P 的大作中提到】
: 这先用excel再用readtable一看就是外行啊。
:
: awk
: ★ 发自iPhone App: ChineseWeb 7.8

d********t
发帖数: 9628
34
我根本不会excel,人家发的excel给我没办法看一眼。

【在 M*P 的大作中提到】
: 这先用excel再用readtable一看就是外行啊。
:
: awk
: ★ 发自iPhone App: ChineseWeb 7.8

j********x
发帖数: 2330
35
怎么总是有人提这种cat xxx | grep/awk/sed ...
直接grep awk sed ...
莫名其妙。。。

【在 w***g 的大作中提到】
: 如果你没有parallel命令,或者命令比较老的话,先用下面的更新。
: (wget -O - pi.dk/3 || curl pi.dk/3/) | sudo bash
: 比如有个大文件XXX有1G, 想数行数。直接就是
: cat XXX | wc -l
: 用parallel就是
: cat XXX | parallel --block 10M --pipe wc -l | awk 'BEGIN{a=0;}{a = a+ $1;}
: END{print a;}'
: wc -l可以换成grep, awk等任意可以以pipe方式运行的程序。
: parallel --pipe会把输入分成大致--block指定的大小,默认是1M。然后启动N个wc一
: 块跑。和hadoop一样,parallel只会在行与行之间切分,所以是awk-friendly的。

1 (共1页)
进入Programming版参与讨论
相关主题
问一个小程序python得Regular Expression 问题
A C++ exception questionA problem on string parsing (using either grep or perl)
ostream& operator << (ostream& s, int cnt) error问个关于正则表达式的超弱智问题...
openMP or boost::thread (pthread) for multithreading ?求推荐python based framework
Shell script 问题易写性,易维护和执行效率综合来看
Usage of Grep???help!!!dart对于js就象ruby对于perl一样
请教一个perl的问题 (转载)说实话要是没有谷歌的话Python在Linux下的地位不如PHP和Perl
请教一个模式匹配问题从心底讨厌scala
相关话题的讨论汇总
话题: awk话题: parallel话题: wc话题: pipe话题: streaming