为什么要重复造轮子?

s
sunshineboy
楼主 (未名空间)

近期看到大家在讨论parse 大文件比如csv的问题

楼主看了不仅有些技痒

csv这类文件的分析处理 都有很成熟的轮子 用什么语言自己写一个 其实划不来

如果文件总量不大(<100GB) 工作不复杂="" 推荐直接用bash="" tool来做="" 又快又好="">具体参照这篇文章 https://adamdrake.com/command-line-tools-can-be-235x-
faster-than-your-hadoop-cluster.html

再大一点的数据 复杂一点的逻辑 用MapReduce平台做 当然现在没人直接写
MapReduce了 直接用Hive,Spark这类。

处理数据应该站在高一点的抽象层 以解决business logic问题为目的 有好轮子直接用 重复造轮子 造螺丝得不偿失

h
helpme

因为生活很无聊

【 在 sunshineboy (阳光男孩) 的大作中提到: 】
: 近期看到大家在讨论parse 大文件比如csv的问题
: 楼主看了不仅有些技痒
: csv这类文件的分析处理 都有很成熟的轮子 用什么语言自己写一个 其实划
不来
: 如果文件总量不大(<100GB) 工作不复杂="" 推荐直接用bash="" tool来做="" 又快又好="">: 具体参照这篇文章 https://adamdrake.com/command-line-tools-can-be-235x-
: faster-than-your-hadoop-cluster.html
: 再大一点的数据 复杂一点的逻辑 用MapReduce平台做 当然现在没人直接写
: MapReduce了 直接用Hive,Spark这类。
: 处理数据应该站在高一点的抽象层 以解决business logic问题为目的 有好轮子直接
: 用 重复造轮子 造螺丝得不偿失

g
guvest

He need a solution in the cpp code. The csv file need to be ended as a cpp
array.

你可以推荐cpp轮子(老魏推荐过了)。
【 在 sunshineboy (阳光男孩) 的大作中提到: 】
: 近期看到大家在讨论parse 大文件比如csv的问题
: 楼主看了不仅有些技痒
: csv这类文件的分析处理 都有很成熟的轮子 用什么语言自己写一个 其实划
不来
: 如果文件总量不大(<100GB) 工作不复杂="" 推荐直接用bash="" tool来做="" 又快又好="">: 具体参照这篇文章 https://adamdrake.com/command-line-tools-can-be-235x-
: faster-than-your-hadoop-cluster.html
: 再大一点的数据 复杂一点的逻辑 用MapReduce平台做 当然现在没人直接写
: MapReduce了 直接用Hive,Spark这类。
: 处理数据应该站在高一点的抽象层 以解决business logic问题为目的 有好轮子直接
: 用 重复造轮子 造螺丝得不偿失

s
sunshineboy

用CPP来处理文件系统 本身就很诡异 我们不了解他这么做的动机 但很多时候我
的经验是先问问你为什么要这样做? 很多时候客户说要买一头牛 其实你发现他只
是需要牛奶


【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: He need a solution in the cpp code. The csv file need to be ended as a cpp: array.
: 你可以推荐cpp轮子(老魏推荐过了)。
: 不来

g
guvest

例如检测设备出来的csv,要计算基础统计。工厂生产线上这种活多了。
苏州无锡深圳各地工厂的数据,以前我都处理过。工厂操作员都是大专或者以下的人,经常各种问题。对这种来源的数据处理,非常麻烦。
cpp写个单机版的tool,exe给他们自己用,挺好的。python有自己的麻烦。
【 在 sunshineboy (阳光男孩) 的大作中提到: 】
: 用CPP来处理文件系统 本身就很诡异 我们不了解他这么做的动机 但很多时候我
: 的经验是先问问你为什么要这样做? 很多时候客户说要买一头牛 其实你发现他只
: 是需要牛奶
:

s
sui

完全赞成。
如果能顺手写好,最好。其次找个轮子即可。
否则 Premature optimization is the root of all evil。
比如老顾说的生产线上下来的数据,根本没那么dirty。花大量的时间在不会发生的
edge cases里纯属浪费。顺手写个parser或者找个轮子即可。
但是如果要写一个通用的parser,同意尽量cover所有的cases。

【 在 sunshineboy (阳光男孩) 的大作中提到: 】
: 近期看到大家在讨论parse 大文件比如csv的问题
: 楼主看了不仅有些技痒
: csv这类文件的分析处理 都有很成熟的轮子 用什么语言自己写一个 其实划
不来
: 如果文件总量不大(<100GB) 工作不复杂="" 推荐直接用bash="" tool来做="" 又快又好="">: 具体参照这篇文章 https://adamdrake.com/command-line-tools-can-be-235x-
: faster-than-your-hadoop-cluster.html
: 再大一点的数据 复杂一点的逻辑 用MapReduce平台做 当然现在没人直接写
: MapReduce了 直接用Hive,Spark这类。
: 处理数据应该站在高一点的抽象层 以解决business logic问题为目的 有好轮子直接
: 用 重复造轮子 造螺丝得不偿失

g
guvest

[1]
parse能用库就用库,不要自己写。这点我从一开始就提出了啊。
csv parse不是一般人能写好的。
用c/cpp,不等于不用parse库。更不等于要重复造轮子。
c/cpp也有库啊。
但是用库要做好测试。

[2]
以前我在的公司,拿到的是各地手机厂和笔记本电脑厂自动检测station出来的数据。
出厂检测发现芯片问题,要找root cause,算统计。数据就是这么dirty。(当时用数学软件干这些活,python还没学)

[3]
假如做数据统计相关的tool给工厂用。你愿意个给国内工厂发个MSVC win32的exe文件
,还是指导他们装python的库?各人有各人选,但我不能认为cpp就完全不该用来处理
数据。其实是go最好。比cpp开发快,时新的库也比较多。出来个1,2M的可执行文件全包括。
【 在 sui (黑圈圈) 的大作中提到: 】
: 完全赞成。
: 如果能顺手写好,最好。其次找个轮子即可。
: 否则 Premature optimization is the root of all evil。
: 比如老顾说的生产线上下来的数据,根本没那么dirty。花大量的时间在不会发生的
: edge cases里纯属浪费。顺手写个parser或者找个轮子即可。
: 但是如果要写一个通用的parser,同意尽量cover所有的cases。
: 不来

r
repast

csvtools 和 csvkit 都用过,都不错。

【 在 sunshineboy (阳光男孩) 的大作中提到: 】
: 近期看到大家在讨论parse 大文件比如csv的问题
: 楼主看了不仅有些技痒
: csv这类文件的分析处理 都有很成熟的轮子 用什么语言自己写一个 其实划
不来
: 如果文件总量不大(<100GB) 工作不复杂="" 推荐直接用bash="" tool来做="" 又快又好="">: 具体参照这篇文章 https://adamdrake.com/command-line-tools-can-be-235x-
: faster-than-your-hadoop-cluster.html
: 再大一点的数据 复杂一点的逻辑 用MapReduce平台做 当然现在没人直接写
: MapReduce了 直接用Hive,Spark这类。
: 处理数据应该站在高一点的抽象层 以解决business logic问题为目的 有好轮子直接
: 用 重复造轮子 造螺丝得不偿失

f
fantasist

不奇怪,比如我司backend基本全CPP,有个做offline conversion的组负则处理客户上传的CSV,用PHP或CPP写一遍是没办法的事,一般不会因为(假设)Java有好用的lib就往系统里添一个Java parser。当年我看了一下这个组的系统直接吓跑了,跟vendor传
的数据较劲太可怕。
那个楼主没给任何context,所以建议他先尝试易用的语言。
【 在 sunshineboy (阳光男孩) 的大作中提到: 】
: 用CPP来处理文件系统 本身就很诡异 我们不了解他这么做的动机 但很多时候我
: 的经验是先问问你为什么要这样做? 很多时候客户说要买一头牛 其实你发现他只
: 是需要牛奶
: