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

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

  •  
  •   levelworm · 3h 16m ago via iPhone · 1269 views

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

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

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

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

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

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

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

    4 replies    2026-09-17 13:32:51 +08:00
    Razio
        1
    Razio  
       2h 48m ago
    debugger 真的很爽,并且干多了就能凭直觉判断问题。
    pheyer
        2
    pheyer  
       51 mins ago
    有了 ai ,就少了很多类似这样的乐趣
    yahaoo
        3
    yahaoo  
       24 mins ago
    一步一步深入, 找到最终的答案, 这个过程就像解谜一样,会很有成就感。 现在只会把问题现象描述给 AI 。
    clemente
        4
    clemente  
       23 mins ago
    想要回味并展示自己一步步排查定位技术难题的过程,享受排错解谜带来的成就感
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5329 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:56 · PVG 13:56 · LAX 22:56 · JFK 01:56
    ♥ Do have faith in what you're doing.