由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Linux版 - 码工码农,帮忙了! (转载)
相关主题
今天拿到了atom editor的测试邀请terminal下怎么对齐table的列?
请问怎么把两个行数相等的文件合并起来?弱问:GDB怎样停在出错的语句上(行号也行)
菜鸟问:getline找不到,该如何安装?请问一个awk的问题
请问一个文件区段替换的问题linux怎样计算rt_priority
Shell 求助如何改变一个文件的UNIT?
linux下面有啥免费的sql数据库没?几秒钟启动 splashtop OS。。。给力了
我用vi是不是out了靠,stress test fialed
awk问题求救问个wine的问题
相关话题的讨论汇总
话题: 文件话题: split话题: csv话题: sqlite话题: index
进入Linux版参与讨论
1 (共1页)
G**Y
发帖数: 33224
1
【 以下文字转载自 PhotoGear 讨论区 】
发信人: GGYY (唧唧歪歪), 信区: PhotoGear
标 题: 码工码农,帮忙了!
发信站: BBS 未名空间站 (Fri Aug 24 16:09:45 2012, 美东)
技术帖。
一个文件1百多万行,怎么最快的从里面读出任意指定的行?(比如第500,000到第501
,000行)能在几秒钟内完成吗?看似应该不难。
linux下面。
y*****n
发帖数: 11251
2
hash吧。
L***n
发帖数: 6727
3
首先什么文件,文本的还是字节的,你想干什么?写C程序还是script处理数据?

501

【在 G**Y 的大作中提到】
: 【 以下文字转载自 PhotoGear 讨论区 】
: 发信人: GGYY (唧唧歪歪), 信区: PhotoGear
: 标 题: 码工码农,帮忙了!
: 发信站: BBS 未名空间站 (Fri Aug 24 16:09:45 2012, 美东)
: 技术帖。
: 一个文件1百多万行,怎么最快的从里面读出任意指定的行?(比如第500,000到第501
: ,000行)能在几秒钟内完成吗?看似应该不难。
: linux下面。

l******n
发帖数: 1683
4
几秒完成那是不可能的, 除非是每行固定长度或者允许事先花个几分钟的时间做一个索
引文件.

501

【在 G**Y 的大作中提到】
: 【 以下文字转载自 PhotoGear 讨论区 】
: 发信人: GGYY (唧唧歪歪), 信区: PhotoGear
: 标 题: 码工码农,帮忙了!
: 发信站: BBS 未名空间站 (Fri Aug 24 16:09:45 2012, 美东)
: 技术帖。
: 一个文件1百多万行,怎么最快的从里面读出任意指定的行?(比如第500,000到第501
: ,000行)能在几秒钟内完成吗?看似应该不难。
: linux下面。

G**Y
发帖数: 33224
5
文本的,就是一个巨大矩阵,
我需要从中间随意读出几行。

【在 L***n 的大作中提到】
: 首先什么文件,文本的还是字节的,你想干什么?写C程序还是script处理数据?
:
: 501

a****a
发帖数: 5763
6
允许事先建立索引吧

【在 G**Y 的大作中提到】
: 文本的,就是一个巨大矩阵,
: 我需要从中间随意读出几行。

L***n
发帖数: 6727
7
文本文件应该没什么难的,python应该没问题吧,如果
是手工编辑vim也可以。几秒钟这个要求不高。文件多大啊,
上G么

【在 G**Y 的大作中提到】
: 文本的,就是一个巨大矩阵,
: 我需要从中间随意读出几行。

G*****h
发帖数: 33134
8
tail -5000 | head -1
hehe 不过很慢

【在 G**Y 的大作中提到】
: 文本的,就是一个巨大矩阵,
: 我需要从中间随意读出几行。

G**Y
发帖数: 33224
9
上G了,7个G吧。没法都搞到内存里。一是内存不够,而是I/O太慢。
google了一下,有人说可以把它转成一个数据库。然后随机选取就容易了?

【在 L***n 的大作中提到】
: 文本文件应该没什么难的,python应该没问题吧,如果
: 是手工编辑vim也可以。几秒钟这个要求不高。文件多大啊,
: 上G么

G**Y
发帖数: 33224
10
允许是允许,可要是让我自己建,就又得调试,测试啥的。得不偿失了。

【在 a****a 的大作中提到】
: 允许事先建立索引吧
相关主题
linux下面有啥免费的sql数据库没?terminal下怎么对齐table的列?
我用vi是不是out了弱问:GDB怎样停在出错的语句上(行号也行)
awk问题求救请问一个awk的问题
进入Linux版参与讨论
L***n
发帖数: 6727
11
7G vim就不行了,简单点处理,你先split成几个小文件吧

【在 G**Y 的大作中提到】
: 上G了,7个G吧。没法都搞到内存里。一是内存不够,而是I/O太慢。
: google了一下,有人说可以把它转成一个数据库。然后随机选取就容易了?

G**Y
发帖数: 33224
12
看来只能先这样了。

【在 L***n 的大作中提到】
: 7G vim就不行了,简单点处理,你先split成几个小文件吧
L***n
发帖数: 6727
13
你的是矩阵,所以列数固定,应该很容易算从哪个文件里找第几行吧

【在 G**Y 的大作中提到】
: 看来只能先这样了。
l******n
发帖数: 1683
14
允许的话那就一点难度都没有了, 最简单的如果不缺存储空间的话就用split命令分割
成1万行的一堆小文件, 然后的事情就很easy了.

【在 G**Y 的大作中提到】
: 允许是允许,可要是让我自己建,就又得调试,测试啥的。得不偿失了。
G**Y
发帖数: 33224
15
csv的。
不能确定是fixed width的,可能有些数字长,有些数字短呀。

【在 L***n 的大作中提到】
: 你的是矩阵,所以列数固定,应该很容易算从哪个文件里找第几行吧
G*****h
发帖数: 33134
16
纯数据弄到数据库里访问比较爽

【在 G**Y 的大作中提到】
: csv的。
: 不能确定是fixed width的,可能有些数字长,有些数字短呀。

L***n
发帖数: 6727
17
哦,先写个小程序把大文件分割成固定行数的若干小文件吧,
可能你要数\n来决定在哪里分割了,不知道有没有现成的工具
干这个的,这步可能慢些,分割完了以后查找就快了。

【在 G**Y 的大作中提到】
: csv的。
: 不能确定是fixed width的,可能有些数字长,有些数字短呀。

G**Y
发帖数: 33224
18
zkss?
听说是可以搞到sqlite里。但是俺对这玩意一点都不熟。
google了一下,没找到特别简单的csv转sqlite的工具(csv 1000来列,能自动处理列
名吗?)
关键就不知道从哪开始google

【在 G*****h 的大作中提到】
: 纯数据弄到数据库里访问比较爽
l******n
发帖数: 1683
19
split呀, 比如如果文件是千万行这个级别的话, 下面这样就可以了
split -l 10000 -d -a 4 filename filename
分割后的文件命名filename0000, filename0001, ...

【在 L***n 的大作中提到】
: 哦,先写个小程序把大文件分割成固定行数的若干小文件吧,
: 可能你要数\n来决定在哪里分割了,不知道有没有现成的工具
: 干这个的,这步可能慢些,分割完了以后查找就快了。

L***n
发帖数: 6727
20
ft 我还真不知道split可以按行分...

【在 l******n 的大作中提到】
: split呀, 比如如果文件是千万行这个级别的话, 下面这样就可以了
: split -l 10000 -d -a 4 filename filename
: 分割后的文件命名filename0000, filename0001, ...

相关主题
linux怎样计算rt_priority靠,stress test fialed
如何改变一个文件的UNIT?问个wine的问题
几秒钟启动 splashtop OS。。。给力了linux下的文件转到windows下读会丢失吗?
进入Linux版参与讨论
l******n
发帖数: 1683
21
... split就是按照行分的呀, csplit才是按照pattern来分.

【在 L***n 的大作中提到】
: ft 我还真不知道split可以按行分...
L***n
发帖数: 6727
22
我以前从来都是按字节分的...

【在 l******n 的大作中提到】
: ... split就是按照行分的呀, csplit才是按照pattern来分.
G**Y
发帖数: 33224
23
我就是用这个分了,现在分了10几个,看看够不够快。不行就得分100个了。

【在 l******n 的大作中提到】
: split呀, 比如如果文件是千万行这个级别的话, 下面这样就可以了
: split -l 10000 -d -a 4 filename filename
: 分割后的文件命名filename0000, filename0001, ...

l******n
发帖数: 1683
24
分小点好, 如果是ext系列文件系统的话吧1000个左右基本不怎么影响速度, 如果是
reiserfs文件系统的话, 可以分得更多一点.

【在 G**Y 的大作中提到】
: 我就是用这个分了,现在分了10几个,看看够不够快。不行就得分100个了。
m********5
发帖数: 17667
25
database啊
m********5
发帖数: 17667
26
try pytable

【在 G**Y 的大作中提到】
: zkss?
: 听说是可以搞到sqlite里。但是俺对这玩意一点都不熟。
: google了一下,没找到特别简单的csv转sqlite的工具(csv 1000来列,能自动处理列
: 名吗?)
: 关键就不知道从哪开始google

kc
发帖数: 3169
27
Google一下aster database,用ncluster_loader非常适合你这需要。半个小时内就能
搞明白。
而且可以直接都csv file

zkss?听说是可以搞到sqlite里。但是俺对这玩意一点都不熟。google了一下,没找到
特别简单的csv转sqlite的工具(csv 1000来列,能自动处理列名吗?)关键........
★ Sent from iPhone App: iReader Mitbbs 7.56 - iPad Lite

【在 G**Y 的大作中提到】
: 我就是用这个分了,现在分了10几个,看看够不够快。不行就得分100个了。
l***i
发帖数: 1309
28
map reduce, hadoop
S*A
发帖数: 7142
29
这个问题要搞清楚前提是什么。
例如要读的大文件是要反复修改的么?
是读一次还是反复读若干行?
假设大文件是不修改的,需要反复读若干行。
那就用程序建立个 Index 好了,数组记住每一行开始在
什么位置。
然后查找就是数组里面按照行号查找就知道位置了。
如果是只读一次,没有辅助信息。那就从头向后数就行了,
而且这个没有更加简单的办法。因为每个字节都可能是新行,
所以必须每个字节都遍历一次直到查找的行号。
w****w
发帖数: 521
30
没人提把table存成binary?还省了parsing。
相关主题
SCIM删除中文每次都是两个,怎么改变?请问怎么把两个行数相等的文件合并起来?
求推荐一个类似dropbox的同步服务器?菜鸟问:getline找不到,该如何安装?
今天拿到了atom editor的测试邀请请问一个文件区段替换的问题
进入Linux版参与讨论
h*******c
发帖数: 248
31
我的原则:
随机读写-〉database
whole table scale-〉file split, sort, merge (basically mapper reducer)
d****n
发帖数: 1637
32
1. first use getc() or getline (),
when reach a newline char '\n', use ftell() function save the current
position into a list/array sequentially
save this entire array into a text/binary format file as index.
2. when you try to pull out server lines from the huge file,
organize the line numbers in ascending order,
for each line number in your query
binary search your previous saved index
lseek the position in the index.
getc() or getline() until to the first '\n' by that offset
3. done
c***r
发帖数: 4631
33
根据我很久以前的经验,sqlite处理这么大的玩意儿很吃力。上mysql吧。

【在 G**Y 的大作中提到】
: zkss?
: 听说是可以搞到sqlite里。但是俺对这玩意一点都不熟。
: google了一下,没找到特别简单的csv转sqlite的工具(csv 1000来列,能自动处理列
: 名吗?)
: 关键就不知道从哪开始google

w****w
发帖数: 521
34
转成binary,只要4个字节一个数,文件size至少减半。然后做个最简单的FIFO buffer,
不在buffer里就去读文件,还有什么比这个更快?
b*******s
发帖数: 5216
35
果然不问不知道需求。快速读取,也许可以参考cache命中的方法?

【在 G**Y 的大作中提到】
: 文本的,就是一个巨大矩阵,
: 我需要从中间随意读出几行。

1 (共1页)
进入Linux版参与讨论
相关主题
问个wine的问题Shell 求助
linux下的文件转到windows下读会丢失吗?linux下面有啥免费的sql数据库没?
SCIM删除中文每次都是两个,怎么改变?我用vi是不是out了
求推荐一个类似dropbox的同步服务器?awk问题求救
今天拿到了atom editor的测试邀请terminal下怎么对齐table的列?
请问怎么把两个行数相等的文件合并起来?弱问:GDB怎样停在出错的语句上(行号也行)
菜鸟问:getline找不到,该如何安装?请问一个awk的问题
请问一个文件区段替换的问题linux怎样计算rt_priority
相关话题的讨论汇总
话题: 文件话题: split话题: csv话题: sqlite话题: index