• 请不要在回答技术问题时复制粘贴 AI 生成的内容
levelworm
V2EX  ›  程序员

今晚一个值得高兴的小事情

  •  
  •   levelworm · Sep 17 via iPhone · 6519 views
    This topic created in 52 days ago, the information mentioned may be changed or developed.

    下午发现某个表数据有问题,从源头开始查起,发现很古怪,某些列出现 null 值,而 s3 里的 csv 看起来是好的。

    心想可能是数据读入之后发生了改变,于是重启了某天的任务,发现照旧。于是决定仔细看看源数据。从 s3 上拉了一天的数据,导入到 duckdb ,发现的确没问题。更诡异的是,数据库里的数据我在 s3 里用 id 来查询,其实找不到。

    于是决定去看看代码,一看是 Scala ,得这玩意我不熟悉,看了下发现就是个很简单的读入 csv 然后加了两列时间戳数据,没啥变化。

    百思不得其解之下,决定仔细对比一下两个数据。因为这玩意有一百多列,所以之前偷懒没全看。这下每个列都列出来,一下子就发现问题,怎么数据偏移到其他列去了?当时就觉得大概是分离符是不是有点问题,毕竟是外头的数据,没洗干净是正常。但是首先 duckdb 没问题,Excel 也没啥问题,那就只好从头一列列对起。

    最终发现是有一列断成了两列,于是这一列之后的数据全都偏移了。看了下,这列数据有""这种两个双引号的,心想大概是 escape 的问题,一查果然是,然后再查为啥 Scala 的代码不对呢?因为这看起来是个蛮普遍的问题--原来 Spark 下读入默认是用\来做 escape 。

    发现原因了,其实最后加一行代码就完了。然后搭建本地的 Spark 环境,写了一小段 Scala 代码,用两种方式读入不同不同一个 csv 文件,做了个验证。搞定了之后明天提交补丁。

    其实这应该是比较简单的问题,但是我不熟悉,就花了不少时间。我不喜欢写业务的 SQL ,但是很喜欢调试代码找错误,这下是过瘾了。

    26 replies  •  2026-09-18 11:32:13 +08:00
    Razio
    Razio
    Sep 17❤️1
    1
    debugger 真的很爽,并且干多了就能凭直觉判断问题。
    pheyer
    pheyer
    Sep 17❤️1
    2
    有了 ai ,就少了很多类似这样的乐趣
    yahaoo
    yahaoo
    Sep 17❤️1
    3
    一步一步深入, 找到最终的答案, 这个过程就像解谜一样,会很有成就感。 现在只会把问题现象描述给 AI 。
    clemente
    clemente
    Sep 17❤️1
    4
    想要回味并展示自己一步步排查定位技术难题的过程,享受排错解谜带来的成就感
    heyjei
    heyjei
    Sep 17❤️1
    5
    我也喜欢这个过程
    zoofy
    zoofy
    Sep 17❤️1
    6
    以前会这样一步步 debug ,现在直接就扔文件和错误信息给 ai 让它找问题了
    jiehuangwei
    7
    这种做法是很久很久以前了,现在多少直接丢给 AI 。分分钟出结果啊,感觉自己没有存在的必要了
    penisulaS
    penisulaS
    Sep 17❤️1
    8
    写 scala 对我来说是很久之前的事了,这个语言真让我感觉到几乎有无穷的变化,能玩出各种各样的元编程花活
    Rickkkkkkk
    Rickkkkkkk
    Sep 17❤️1
    9
    你有用过 ai 看这个问题吗
    zhw2590582
    zhw2590582
    Sep 17❤️1
    10
    AI 会出手的
    harrietliu
    harrietliu
    Sep 17❤️1
    11
    感觉 ai 还是要引导一下,不然也容易偏。有经验的话就是如虎添翼了,杂活给 ai
    levelworm
    levelworm
    OP
    Sep 17
    12
    @Razio #1
    的确,我还是喜欢这种活。现在特别希望能够进一个什么比如操作系统啊,或者编译器啊,或者随便什么系统软件的组,然后就让我一直写补丁,我擦我能写到死。
    levelworm
    levelworm
    OP
    Sep 17
    13
    @pheyer #2
    还行,因为我比较喜欢,所以主动限制 AI 的使用。不过我还是问了 AI 一些问题,因为我实在是不确定 Scala 的代码我理解的对不对。
    levelworm
    levelworm
    OP
    Sep 17
    14
    @heyjei #5
    是啊。我还是很羡慕在系统软件组里写补丁的朋友,整天在迷宫里琢磨,搞定了一个问题,可能就几行代码,但是之前可能是几个月的追踪。

    但是 AI 一来,很多人都用 AI 来提交补丁,这种乐趣,对于普通人来说,可能就不会再有了。除非是毫无现实价值的软件,没人去用 AI ,那可能还有点机会。

    所以我其实是不喜欢 AI 的。
    levelworm
    levelworm
    OP
    Sep 17
    15
    @penisulaS #8
    我其实还挺想学这个东西的,因为想学 packrat parsing ,据说代码编辑器需要这种算法来做渐进解析。不过的确是没精力了。而且我做数据工程的,现在 Scala 的东西越来越少了,我自己也是写 PySpark 的。
    levelworm
    levelworm
    OP
    Sep 17
    16
    @Rickkkkkkk #9
    因为我搞了一会没搞出来,就产生兴趣了,没让 AI 去看。但是后来我让 AI 去看 Scala ,因为我不懂 Scala 。
    levelworm
    levelworm
    OP
    Sep 17
    17
    @harrietliu #11
    是的,这种事情搞过一次,后续就快了。
    dirstart
    dirstart
    Sep 18❤️1
    18
    天生的程序员。最近刚好也发现 cf 有个 bug ,排查了老半天,就是有点浪费时间😂
    最怕花时间没有找到为什么,这个时候就很挫败啦
    levelworm
    levelworm
    OP
    Sep 18 via iPhone
    19
    @dirstart #18
    的确啊,没找到的话就越想找,不知不觉就熬夜了。。。我这四十多岁的人可吃不消。
    zuokanyunqishi
    20
    @levelworm 可以评测大模型啊...
    Rorysky
    Rorysky
    Sep 18❤️2
    21
    缺少一个反思环节,这么简单引起的 bug ,我怎么才查出来
    litchinn
    litchinn
    Sep 18❤️1
    22
    这种事情对于程序员来说就像推理小说
    程序员就是侦探,日志、数据库、代码就是案发现场,最后破案来当然很爽
    AI 来了就好比破案现在靠摄像头、DNA 检测,无聊但准确,哈哈
    levelworm
    levelworm
    OP
    Sep 18 via iPhone
    23
    @Rorysky #21
    反思结果就是水平烂见得少,没得说。水平烂也有好处,学会一点就开心。
    levelworm
    levelworm
    OP
    Sep 18 via iPhone
    24
    @litchinn #22
    的确,我平时的工作吧还是业务逻辑代码居多,没啥意思,难得碰到一些不完全是业务的东西。
    Rorysky
    Rorysky
    Sep 18❤️1
    25
    @levelworm 一拍大腿,这样古法 debug 的乐趣才完整
    levelworm
    levelworm
    OP
    Sep 18 via iPhone
    26
    @Rorysky #25
    唉真是不想写业务代码了,尤其是 SQL 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1451 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 71ms · UTC 11:14 · PVG 19:14 · LAX 03:14 · JFK 06:14
    ♥ Do have faith in what you're doing.